본문 바로가기

Computer Science/운영체제9

[OS] CPU 스케줄링과 스케줄링 알고리즘 CPU scheduling CPU 스케줄링(Scheduling)이란 어떤 프로세스가 CPU를 점유할지를 결정하는 것을 말한다. CPU 스케줄링의 목적은 시스템을 효율적이고 빠르고 공정(fair)하게 만드는 것이다. CPU 스케줄링은 다음과 같은 기준으로 평가될 수 있다. CPU 이용률(CPU Utilization): 단위는 % 처리율(Throughput): 시간 당 몇 개의 작업을 처리하는가? (Jobs/sec) 반환시간(Turnaround Time): 하나의 프로세스가 작업을 시작하고부터 종료할 때까지 걸린 시간 (sec) 대기시간(Waiting Time): 레디 큐에서 기다린 시간 (sec) 응답시간(Response Time): (보통 대화형 시스템에서) 사용자가 요청을 한 시점부터 응답이 나올 때까.. 2021. 4. 12.
[OS] 프로세스란? (프로세스와 프로세스 관리) 프로세스란? Program vs Process 프로그램 그 자체로는 아무 일도 할 수 없다. 프로그램은 그저 하드디스크에 저장되어 있는 하나의 파일, 즉 수동적인 존재일 뿐이다. 프로그램이 사용자에게 유용한 기능을 제공하기 위해서는 메모리에 로드되어서 프로그램 카운터(PC) 및 관련 자원의 집합을 가진 능동적인 존재로서 동작해야한다. 예를 들어 바탕화면에 있는 Word 프로그램은 그 자체로는 아무 의미가 없다. 우리가 마우스를 올려서 더블클릭을 하고 실행이 되어서, 흰 바탕에 커서가 깜빡거리는 순간 유용한 무언가가 되는 것이다. 그래서 프로세스는 비공식적으로 실행 중인 프로그램(Program in execution)이라고 불린다. 프로그램이 하나의 프로세스가 되는 과정은 다음과 같다. 사용자가 프로그램을.. 2021. 4. 11.
[OS] 임계구역과 경쟁상태 그리고 동기화 목표: 멀티 프로세스/쓰레드 환경에서 핵심적인 문제인 동기화가 무엇인지 살펴봅니다. BankAccount 예제를 통해서 경쟁 상태와 임계 구역 문제에 대해 알아봅니다. 쓰레드에 대한 기본 개념이 없으신 분들은 이 글을 참조해주세요. 경쟁상태와 임계구역 현대의 운영체제 대부분은 멀티 쓰레드를 지원합니다. 근데 이때 공유 자원(shared data)에 여러 쓰레드가 접근해 값을 수정하면 데이터의 일관성(consistency)이 깨지게 되는데, 이를 경쟁 상태(Race Condition)라고 합니다. 이 경쟁 상태를 해결하기 위한 것이 동기화(Synchronization)입니다. 예를 들어보죠. 하나의 은행 계좌(공유 자원)에 부모님은 돈을 입금하고 자식은 돈을 출금하는 상황을 코드로 구현해 보겠습니다. 우선.. 2021. 4. 10.