📚 CS/운영체제

📚 CS/운영체제

[OS] 프로세스 충돌해결 2 (Critical-Section Problem)

지난 강의 내용인 프로세스 충돌 해결 1과 이어집니다. 0. 복습 Critical Section 코드들이 Race Condition을 발생하지 않게 하기 위해서는 Critcal Section 전후에 Entry Section, Exit Section로 울타리를 두어 Mutual Exclusion을 만족시켜야 한다. 이 때 Entry Section은 울타리 영역 내부에 다른 프로세스가 실행 중인지 체크하고 비어 있는 경우 프로세스의 접근을 허용하는 역할을 하고, Exit Section은 울타리 영역 밖 다른 프로세스가 대기하고 있는 경우 영역 내부로 들어가도 되는지의 여부를 전달하는 역할을 한다. 지난 시간 말미에 소프트웨어적으로 이를 구현해보았으나 애로사항이 다소 발생하였고, 이를 하드웨어 지원을 받아 M..

📚 CS/운영체제

[OS] 프로세스 충돌해결 1 (Concurrency Control)

1. 프로세스 충돌 컴퓨터 시스템 내부에서는 다양한 이벤트(쓰레드)들이 컴퓨터 자원을 사이에 두고 동시다발적으로 발생한다. 이들이 실행되며 충돌하는 경우가 빈번히 발생한다. Race condition 두 개 이상의 프로세스가 거의 동시에 접근하여 처리된 순서를 가릴 수 없는 상황을 말한다. Mutual exclusion 두 개 이상의 프로세스가 같은 메모리에 접근하는 상황에서 (공유 자원을 할당받아 사용할 떄) 한 번에 한 프로세스씩 액세스하도록 하는 성질. (상호배제) Race condition을 방지하기 위해선 Mutial Exclusion 성질이 만족되도록 프로그래밍되어야 한다. Critical section 공유 영역에서 값을 변경시키는 행위 Starvation 요청한 자원이 오랜 기간 동안 배정..

📚 CS/운영체제

[OS] 프로세스 종료절차와 쓰레드 (Process Termination, Thread)

1. 프로세스 종료 절차 실행(running)을 끝마친 프로세스는 바로 컴퓨터 시스템에서 사라지는 것이 아니라, 일련의 과정 (exit - terminated - wait)을 거친다. 프로세스 종료 조건 exit() 시스템 콜을 호출받은 경우 처리할 수 없는 (non-handling) 시그널을 받은 경우 CPU 내부 프로그램 에러가 발생한 경우 부모 프로세스가 하위 프로세스의 종료를 요청할 경우 Exit (release) 과정 실행이 끝난 직후 처리되는 시스템 콜. 메인 메모리 중 커널 내의 PCB를 제외한 코드, 데이터, 스택 등을 회수한다. Terminated(zombie) 상태 Exit() 처리를 통해 프로세스는 Terminated 상태로 진입한다. 부모 프로세스에 의해 Wait() 시스템 콜이 호..

📚 CS/운영체제

[OS] 프로세스 컨텍스트와 생성절차 (Process Context & Creation)

1. 프로세스 컨텍스트 프로세스가 실행되는 데 필요한 컴퓨터 내의 정보 및 구성 요소 자원 집합. 유저 컨텍스트와 시스템 컨텍스트로 세분화된다. 유저 컨텍스트 프로그램 작성자(사람)에 의해 결정되는 컨텍스트 프로그램을 구성하는 코드, 데이터, User Stack의 집합을 지칭한다. 시스템 컨텍스트 운영체제에 의해 결정되는 컨텍스트 커널 코드 내의 함수 호출을 위한 커널 스택 (Kernel Stack) 프로세스 관련 정보를 저장하는 자료구조인 PCB로 구성되어 있다. fork() (하위 프로세스를 생성하는 System Call)을 통해 생성된 하위 프로세스의 식별 ID를 Pid에 할당한다. 이에 유효한 값이 할당된 경우 Delay를 주어 Pid의 스케쥴링 (CPU 할당)을 기다린다. 하위 프로세스는 부모 ..

📚 CS/운영체제

[OS] 프로세스 상태 모델과 PCB (Process State Model & Process Control Block)

1. 프로세스 상태 모델 Running or Not Running (Ready State + Blocked State) 프로세스가 실행중이지 않을 경우 (Not Running) 두 가지 상태로 분류할 수 있다. 준비 상태 : 프로세서가 주어진 경우 실행 가능한 상태 (Multi Processing에서 Time Out등으로 후순위로 밀려나간 경우 등) 블럭 상태 : 프로세서가 주어져도 실행되지 못하는 상태. I/O 등의 이벤트를 기다리는 상태들. 이벤트가 완료되면 Running State로 돌아가는 것이 아닌 Ready State로 넘어가 Ready queue에서 순서를 기다린다. 결론적으로 Ready queue, Blocked queue의 두 가지 큐가 존재한다. 블럭 상태로 편입되는 경우가 다양한데, ..

📚 CS/운영체제

[OS] 운영체제 구조와 프로세스 (OS Architecture & Process)

1. 운영체제의 소프트웨어 구조 1-1. 모노리씩 커널 구조 (Monolithic Kernel) '단일체'라는 의미로, 커널 SW가 한 덩어리로 모여 있는 것을 의미한다. 내부에서 내부 함수 콜을 호출하고 결과를 받기 때문에, 실행 속도가 빠르다. Unix, Linux 1-2. 마이크로 커널 구조 (Micro Kernel) 운영체제의 기능들이 외부에서 구현되는 아키텍쳐를 의미한다. 프로세스의 형태를 띄며 운영체제 위에서 응용프로그램이 실행되는 것처럼 커널이 실행된다. 실행속도는 상대적으로 느리지만, 유지보수가 편리하다. 파일 관리, 통신 프로토콜, 입출력 디바이스 제어와 같은 기능들이 커널 외부에서 실행된다. 그러나 하드웨어 종속적인 코드들과 메모리 영역을 보호하는 프로세스, 기본적인 스케줄링 기능들은 ..

📚 CS/운영체제

[OS] 컴퓨터 시스템과 처리방식

컴퓨터 시스템 (폰노이만 컴퓨터의 기본적인 구조) 프로세서(CPU)와 메모리(OS, Program) 그리고 Bus 형식으로 이어져 있는 I/O Controller로 구성된다. OS는 비휘발성 보조기억장치에 저장되어 있다. 프로그램이 실행되기 위해선 주기억장치로 복사 / 호출되어야 한다. 커널(Kernel) : 운영체제의 기능 중 항상 주기억장치에 상주하는 요소들을 의미한다. 본 강의에서는 넓은 범위의 ‘운영체제’로 이해하면 된다. 컴퓨터의 역사와 처리 방식 Serial Processing 사람에 의해 Operating되는 초기 운용 방식 Simple Batch Systems (단순 일괄 처리 방식) Monitor Software의 등장 마그네틱 카드로 이루어져 있는 일련의 프로그램의 묶음을 차례차례 메모..

황재웅 Jaeppetto
'📚 CS/운영체제' 카테고리의 글 목록 (2 Page)