본문 바로가기

728x90

전체 보기

(111)
[운영체제 -4] Process Synchronization(병행 제어)과 Semaphore 지금까지 Process가 관리되는 모습과, CPU 할당을 위해 OS가 Process들을 어떻게 Scheduling하는지에 대해서 알아봤다. Process 들은 서로 다른 목적을 가지고 수행이 되는 Program들이라는 점을 이해했고, Process들이 자기가 수행되는 OS 공간 내에서 System Call 등을 통한 컴퓨터 자원을 사용한다는 점을 이해했다면, Process Synchronization에 대해서 생각해볼 필요가 있다. 병행 제어는 코드들도 등장하여 생각보다 복잡하고 어려울 수 있는 부분이다. 생각보다 긴 포스트가 되었는데 한번에 이해할 수는 없더라도 여러번 읽어보고 다른 포스트, 다른 강의들도 참고하면서 공부하다보면 금방 이해할 수 있을 것이다. (나부터 더 이해할 수 있도록... ^^) ..
[운영체제 -3] OS CPU Scheduling Scheduling은 운영체제 학습 중 가장 중요한 항목 중 하나라고 해도 과언이 아니라고들 한다. OS가 하는 Scheduling이 무엇이고, 어떠한 것들이 있고, 그리고 어떠한 알고리즘을 통해서 수행하는지 확인해보자. 우선 Scheduling의 개요를 살펴보자. 프로세스는 일반적으로 위 그림과 같은 흐름을 가지게 된다. 계속 CPU가 일을 하다가 IO가 등장해서 Waiting으로 가고, 또 CPU가 일을 하다가 IO가 등장해서 Waiting으로 가고 를 반복한다. 물론 어떤 도중이던 Interrupt가 발생해서 CPU를 뺏길 수는 있다. 이렇게 프로세스 내에서 CPU가 일을 하고 있는 시간을 CPU Burst라고 부르고, IO를 기다리고 있는 시간을 IO Burst 라고 부른다 (참고로 IO를 어려워..
[운영체제 -2] Process Management 지난 포스트에서 Process 를 이해하기 위한 State, Context Switch, PCB, Queue, Thread 등 Process 의 개념적인 측면에서 여러가지를 이해해볼 수 있었다. 이번 포스트에서는 이 Process가 운영이 될 때 어떤식으로 관리가 되는지, 어떤식으로 생성이되고 종료가 되고, 일하는 도중에는 무슨 일들이 일어나는지 확인해보자. 참고로 운영체제에서 배우는 Process Management 는 실제에 비해 매우 간소화해서 설명하였다고 이해하면 될 것이고, 이런 느낌으로 일어나는거구나를 이해하면 될 것 같다. 1. 프로세스 생성 운영체제에서 프로세스는 부모를 통해서 생성된다. 즉, 부모가 자식 프로세스를 생성하고, 자식 프로세스가 또 자식프로세스를 생성하는 Tree 구조(계층 ..
[운영체제 -1] Process 와 Thread (1) Process 홍성수 교수님 수업 때 말씀하시길, 누가 운영체제 수업 들었구나, 그럼 프로세스가 뭔지 말해봐라? 라고 질문을 한다면 다음과 같이 깔끔하게 답변할 수 있어야 한다고 한다. Process is a Program in execution 실행중인 프로그램을 말한다. 메모리 주소가 형성이 되어 메모리에 올라가 있는 상태가 비로소 execute 된 것이며, 교수님 말씀을 빌리면, program 은 그저 body이고, process 가 life 라고 한다. 그만큼 중요한 개념인 것 같으니 program 과 process, thread의 차이를 확실히 이해하고 가면 좋을 것 같다. ** 참고로 그렇다면 Process와의 차이 측면에서 Program은 어떻게 정의할까? Program은 이미 성취하..
[운영체제] 개요 운영체제 (Operating System) 운영체제란 컴퓨터 계층에서 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드에어를 연결하는 소프트웨어 계층을 말한다. 운영체제는 컴퓨터 상에서 자원들을 효율적으로 관리하고, 일어나는 일들을 관리함에 있어서 매우 중요한 역할을 수행한다. 주로, 운영체제가 하드웨어를 효율적으로 관리하는 점이 매우 중요하다 (CPU, Memory 등: 사실상 이것들을 자원이라고 부르는 것인데, 이미 주어진 상태인 해당 자원들을 효율적으로 사용하고 관리할 수 있어야 한다). 효율성 / 형평성 등을 따지면서 관리한다. ex) 실행중인 프로그램들에게 짧은 시간씩 CPU 를 번갈아 가며 할당 // 실행중인 프로그램들에 메모리 공간을 적절히 분배 협의의 운영체제 (Kerne..
[Jenkins] 강의 DevOps 와 Ci/CD 에 대한 이해 Waterfall > 단계별로 수행되는 일의 모습 (계획 / 형식에 의존성이 큼) 요구사항정의 > 분석 / 설계 > 구현 > 테스트 > 운영 (이전 단계로 돌아가기가 상당히 어려움) Agile > 의졵성을 줄임 프로젝트의 생명 주기 동안 반복적인 과정을 통해 SW 가 진화되고 사용자의 니즈를 만족시켜주는 과정. (TDD, Scrum 등등이 포함) > 문서화 / 절차를 중심적으로 했던 방향 --> 시시각각으로 요구 사항 변경이 생겼을 떄 반영해줄 수 있는 시스템으로 변경 > 요즘 나타나는 IT 에서는 Cloud, 가상화, MSA 등이 트랜드임. >>>> 클라우드 네이티브 아키텍처란? : >>> 클라우드에서 빌드되고, 클라우드 컴퓨팅 모델을 최대한 활용하여 워크로드를..
[DB 튜닝]- Oracle DB Memory -> PRocess 의 집합 -> Instance 라고 부름. Instance 는 DB를 변경하기 위한 구조..? DB (데이터 집합소 자체) DBMS (DB 를 쉽게 접할 수 있도록 도와주는 SW, ex) Oracle, Maria DB, Window 등)) >> Instance (메모리 영역에서 수행했던 작업들이 디스크 쪽에 반영이 되어야 하는데, 그 반영을 해주는 프로세스가 필요, 이 메모리와 프로세스의 집합을 인스턴스라고 부름) DBS () pg 28 DB 서버 구조 내가 필요한 데이터가 있는 DB 서버에 접속하게 됨. 이 DB 접속을 요청하는 쪽은 Client 라고 부름 Client 에서 보내는 SQL ----> DB서버에서 컴파일 해주고, 네트워크를 통해서 Data 들을 전송해주게 ..
생각 및 작업 담기 물론 API 스펙에 따라 쉽게 변경될 수 있고, 그러기 위해서 Dto 를 마련해 놓는 것이다. 하지만 응답마다, 요청마다를 위해 Dto 를 마련하는 것은 조금 비효율 적인 것 같다는 생각이 들었다. (이게 맞는 생각인지는 잘 모르겠음) 예를 들어보자. 현재 모임을 생성하고 생성 완료에 대한 응답을 보내주려 한다. 1) 생성 완료했으니 아마 플로우가 그 모임 화면으로 이동하는 것일 것. 그거에 맞춰서 바로 모임 화면을 뿌려줄 수 있도록 바로 생성된 모임 정보를 전송해준다. 2) 생성 완료했으니 생성된 모임에 대한 PK 값 정도만 응답해줌. 그리고 플로우가 어쨌든 생성된 모임으로 이동해주기 위해서는 다시 한번 모임 PK 에 대한, 그리고 현재 유저에 대한 요청을 다시한번 진행해야 한다. > 1과 같은 경우 ..
[Spring Security] Security 의 에러처리 기본적으로 나의 구성 >> JwtAuthenticationFilter 이후, JwtLoginFilter 를 둠. >> Authentication 을 한다가 더 큰 범주이니 앞에 오는게 맞긴 할듯. 문제의 시작 > LoginFilter에서 ObjectMapper 에 문제가 발생했는데, AuthenticationFilter 에서 doFilter에 묶인 try catch 에서 받는 모습이 확인됨. >>>>> 이상하다? ExceptionTranslationFilter 에서 받아야 하는 것 아닌가? https://uchupura.tistory.com/22 [스프링 시큐리티] ExceptionTranslationFilter ExceptionTranslationFilter 필터의 경우 아래 2가지 예외를 발생시킨다...
[JPA] 실전 수업 듣는 중 메모사항 1) @PersistenceContext 와 @Autowired 를 통한 EntityManager 관리에 대하여 한 영컨에는 EntityManagerFactory 가 할당되며, 해당 팩토리에서 한 요청 (DB 와의 트랜젝션) 을 처리하기 위해 Single EntityManager 를 생성 후 할당한다 . (당연히 그래야함. 1000개의 요청이 동시에 와서 다같이 한 매니저 사용한다고 해보셈. 1차캐시부터 지랄 남) 그리고 이 시점에서 둘의 차이에 대해서 이해해보아야 한다. @Autowired -> Singleton Container 내부에서 찾는 역할 구현체를 찾아서 가져와 주는 방식 (필드 선언 방식) // 생성자를 통한 주입방식과 다름. 생성자를 추천함. (이건 걍 ㅈㄴ 나쁜 녀석인듯) @Persis..