Oneulog

작년 하반기 면접 과정을 거치면서 특히 운영체제 부문의 학습이 필요함을 느꼈다. 그렇게 인프런 스터디, 인터넷 강의를 찾는 도중 스터디 페이지에서 JSCODE 에서 진행하는 운영체제 스터디를 발견하게 되어 신청하게 되었다. 해당 과정을 진행하며 가장 만족스러웠던 부분은 주어진 문제를 가지고 모의 면접 과정을 거치는 부분이었다. 운영체제에 관련해 자세히 공부해보며 내가 생각했던 부분을 안드레아님께 여쭤봤을 때 꼼꼼히 알려주시는 부분도 좋았다. (특히, racecondition을 문제가 발생한 상태로 보는 게 맞는지, 문제가 발생할 수 있는 상태로 보는 게 맞는지에 대한 질문) 이 스터디를 거치며 운영체제에 관하여 다른 분들과 이야기를 나누며 많은 것을 얻어가는 좋은 경험이 되었다.
1. 교착상태란? 교착 상태는 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다. -> 일어나지 않을 사건을 기다리며 진행이 멈춰버리는 현상 (1) 교착 상태를 해결하기 위한 방법 교착 상태가 발생했을 때의 상황을 정확히 표현하기 - 자원할당 그래프 교착 상태가 일어나는 근본적인 이유 이해하기 - 교착 상태가 발생하는 조건 2. 자원 할당 그래프 교착 상태 발생 조건 파악 가능 어떤 프로세스가 어떤 자원을 할당받아 사용 중인지 확인 가능 어떤 프로세스가 어떤 자원을 기다리고 있는지 확인 가능 (1) 그리는 방법 1. 프로세스는 원으로, 자원의 종류는 사각형으로 표현 2. 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현 3. 프로세스가 어떤 자원을 할당받아 사용 중이..
동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받는다. 이 과정에서 자원의 일관성을 보장해야 한다. -> 자원의 일관성을 보장하기 위해서 프로세스들의 동기화를 고려해야 한다. 1. 동기화의 의미 공동의 목적을 위해 동시에 수행되는 프로세스 ex) 워드 프로세서 프로그램 맞춤법 검사 프로세스 입력 내용을 화면에 출력하는 프로세스 이렇게 막 실행해도 괜찮은가? -> No. 올바른 수행을 위해 프로세스들은 동기화되어야 한다. (1) 프로세스 동기화란? 프로세스 동기화란 프로세스들의 수행 시기를 맞추는 것이다. 이는 크게 두 가지를 의미한다. 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 -> 실행의 문맥을..
1. 병행성(Concurrency) 병행성은 동시성이라고 부르기도 한다. 논리적인 개념(프로그램 성질) 보통 단일 프로세서 혹은 싱글 코어에서 여러 작업(단일 스레드 프로세스 여러 개 혹은 다중 스레드 프로세스)을 동작시키기 위해 사용한다. 하지만 멀티 코어에서도 실행이 가능하다. -> 싱글, 멀티 코어 둘 다 실행 가능 보기에는 스레드들을 동시에 병렬적으로 실행하는 것처럼 보이지만, 사실은 번갈아가면서 실행을 시켜 동시에 실행되는 것처럼 보이게 한다. 2. 병렬성(Parallelism) 병렬성은 실제로 동시에 실행된다. 물리적인 개념(하드웨어 성질) 멀티 프로세서 혹은 멀티 코어 환경에서 독립적으로 작업을 수행한다. 멀티코어에서만 실행이 가능하다. 병렬성은 데이터 병렬성, 작업 병렬성으로 나뉜다. 데이..
스케줄러 Ready Queue에 존재하는 프로세스들을 특정한 우선순위를 기반으로 CPU를 할당받게 하는 역할로 장기, 중기, 단기 스케줄러가 있다. 프로세스를 스케줄링하기 위한 Queue의 종류 1. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 2. Ready Queue : 현재 메모리 내에 있으면서 CPU를 할당받기를 기다리는 프로세스의 집합 3. Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 1. 장기 스케줄러(Long-Term Scheduler) 수행할 Job이 10개지만 메모리에는 6개만 올릴 수 있는 상황일 때, Job을 고르는 역할을 하는 것이 장기 스케줄러이다. -> 따라서 Job 스케줄러라고도 부른다. Ready Queue에 적재하..
CPU 스케줄링 알고리즘 CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다. 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. 이 알고리즘은 CPU 이용률은 높게, 주어진 시간에 많은 일을 하게, Ready Queue에 있는 프로세스는 적게, 응답 시간은 짧게 설정하는 것을 목표로 한다. 1. 비선점형 방식(=비전형 방식) 비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지하지 않는다. 따라서 프로세스 종료나 I/O 등의 이벤트가 발생할 때까지 실행을 보장하며, Context Switching으로 인한 부하가 적다. (1) FCFS(First Come..
1. 교착 상태(Deadlock) 교착 상태는 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다. 예를 들어 프로세스 A가 프로세스 B의 어떤 자원을 요청할 때 프로세스 B도 프로세스 A가 점유하고 있는 자원을 요청하는 것이다. 2. 교착상태의 원인 아래의 4가지 조건을 모두 달성할 경우 교착 상태에 빠지게 된다. (1) 상호 배제 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근이 불가능하다. (2) 점유 대기 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태이다. (3) 비선점 다른 프로세스의 자원을 강제적으로 가져올 수 없다. (4) 순환 대기(=환형 대기) 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등..
1. 멀티 프로세스 vs 멀티 스레드 동일한 작업을 수행하는 단일 스레드 프로세스를 여러 개 실행하는 멀티 프로세스와 하나의 프로세스를 여러 스레드로 실행하는 멀티 프로세스는 어떤 차이가 있을까? 중요한 것은 프로세스끼리는 기본적으로 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내의 자원을 공유함녀서 실행된다는 점이다. (1) 멀티 프로세스 프로세스를 fork하면 코드/데이터/힙 영역 등의 모든 자원이 복제되어 저장된다. 즉, 저장된 메모리 주소를 제외하면 모든 것이 동일한 프로세스 2개가 통째로 메모리에 적재되는 것이다. 가령 fork를 4번 한다면 메모리에는 같은 프로세스가 통째로 4개가 적재된다. 하지만 fork 직후 같은 프로세스를 통째로 메모리에 중복 저장하지 않으면서 동시에 프로세스끼리..
NLP Developer
'CS' 카테고리의 글 목록