묻공러
'CS/[혼자 공부하는] 운영체제' 카테고리의 글 목록 (2 Page)

CS/[혼자 공부하는] 운영체제

CS/[혼자 공부하는] 운영체제

3-2] CPU 스케줄링: CPU 스케줄링 알고리즘

선입 선처리 스케줄링 FCFS, First Come First Served 스케줄링 단순히 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링 먼저 CPU를 요청한 프로세스부터 CPU 할당 단점: 프로세스들이 기다리는 시간이 매우 길어질 수 있다는 부작용 (= 호위 효과) 최단 작업 우선 스케줄링 SJF, Shortest Job First 스케줄링 호위 효과를 방지하기 위해 CPU 사용 시간이 긴 프로세스는 나중에 실행하고 CPU 사용 시간이 짧은 프로세스는 먼저 실행 라운드 로빈 스케줄링 RP, Round Robin 스케줄링 선입 선처리 스케줄링 + 타임 슬라이스(time slice) 타임 슬라이스: 각 프로세스가 CPU를 사용할 수 있는 정해진 시간 정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CP..

CS/[혼자 공부하는] 운영체제

3-1] CPU 스케줄링: CPU 스케줄링 개요

CPU 스케줄링 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 프로세스 우선순위 가장 공정한 CPU 스케줄링은 CPU를 원하는 프로세스들이 차례로 돌아가는 것이 아니라 빨리 처리해야 하는 프로세스 즉, 우선순위에 따라 진행하는 것이다 그리고 이러한 프로세스 우선순위는 프로세스의 PCB에 저장이 된다 ex. 입출력 작업이 많은 프로세스(= 입출력 집중 프로세스)의 우선순위는 CPU 작업이 많은 프로세스(= CPU 집중 프로세스)의 우선순위보다 높다 스케줄링 큐 운영체제가 매번 모든 프로세스의 PCB를 확인하는 것은 너무 비효율적이다 따라서 운영체제가 스케줄링 큐를 이용 대표적으로는 준비 큐와 대기 큐가 있음 준비큐와 대기 큐 프로세스 상태 다이어그램 선점형 스케줄링과 비선점형 스케..

CS/[혼자 공부하는] 운영체제

2-3] 프로세스와 스레드: 스레드

스레드(thread)의 의미 프로세스를 이루는 실행 흐름의 단위 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다 모든 스레드들은 프로세스의 자원을 공유하면서 실행이 된다 스레드의 종류 1. 실행 흐름이 하나인 프로세스 (단일 스레드 프로세스) 2. 실행 흐름이 여러 개인 프로세스 (멀티 스레드 프로세스) 프로세스를 이루는 여러 명령어 동시 실행 가능 스레드의 구성요소 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보 멀티 프로세스 vs. 멀티 스레드 프로세스끼리는 독자적으로 실행되고 자원을 공유하지 않는다 스레드끼리는 같은 프로세스 내의 자원을 공유하며 실행된다 멀티 프로세스 프로세스를 fork 하면 코드/데이터/힙 영역 등 모든 자원이 복제되어 저장됨 저장..

CS/[혼자 공부하는] 운영체제

2-2] 프로세스와 스레드: 프로세스 상태와 계층 구조

프로세스 상태 생성 상태 준비 상태 실행 상태 대기 상태 종료 상태 생성 상태 이제 막 메모리에 적재되어 PCB를 할당받은 상태 준비가 완료되었다면 준비 상태로 준비 상태 당장이라도 CPU를 할당 받아 실행할 수 있지만 자신의 차례가 아니기에 기다리는 상태 자신의 차례가 된다면 실행 상태로 (= 디스패치) 실행 상태 CPU를 할당 받아 실행 중인 상태 할당된 시간 모두 사용 시(타이머 인터럽트 발생 시) 준비 상태로 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태로 대기 상태 프로세스가 실행 도중 입출력장치를 사용하는 경우 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듦 입출력 작업이 끝나면 (입출력 완료 인터럽트를 받으면) 준비 상태로 종료 상태 프로세스가 종료된..

CS/[혼자 공부하는] 운영체제

2-1] 프로세스와 스레드: 프로세스 개요

프로세스의 종류 포그라운드 프로세스 (foreground process) 사용자가 볼 수 있는 공간에서 실행되는 프로세스 백그라운드 프로세스 (background process) 사용자가 볼 수 없는 공간에서 실행되는 프로세스 1. 사용자와 직접 상호작용이 가능한 백그라운드 프로세스 2. 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스: 데몬(daemon), 서비스(service) 프로세스 제어 블록 (PCB) 프로세스들은 돌아가며 한정된 시간만큼만 CPU를 이용 자신의 차례에 정해진 시간만큼 CPU 이용 타이머 인터럽트(클럭 신호를 발생시키는 장치에 의해 주기적으로 발생하는 인터럽트)가 발생하면 차례 양보 빠르게 번갈아 수행되는 프로세스들을 관리하는데 사용하는 자료구조가 프로세스 제어 블..

CS/[혼자 공부하는] 운영체제

1-2] 운영체제 기초: 운영체제의 큰 그림

커널 운영체제가 제공하는 기능은 다양하지만 가장 핵심적인 서비스는 존재한다 예를 들어 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등... 이러한 운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel)이라고 한다 유저 인터페이스 (UI, User Interface) 운영체제에는 속하지만 커널에는 속하지 않는 기능 사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아님 이중 모드 응용프로그램이 자원에 직접 접근하는 것은 위험하다 운영체제는 응용 프로그램들이 자원에 접근하려 할 때 오직 자신(운영체제)을 통해서만 접근하도록 하여 자원을 보호 따라서, 응용 프로그램이 자원에 접근하려면 운영체제에 도움을 요청(= 운영체제의 코드를 실행) 해야 한다 이러한 운..

CS/[혼자 공부하는] 운영체제

1-1] 운영체제 기초: 운영체제를 알아야 하는 이유

운영체제 운영체제는 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 운영체제는 커널 영역에서 적재되는 프로그램이다 운영체제의 기능 메모리 관리 CPU 관리 입출력장치 관리 따라서, 운영체제는 응용프로그램과 하드웨어를 연결 운영체제를 배워야 하는 이유 운영체제는 프로그램을 위한 프로그램 그렇기에 프로그램을 만드는 개발자는 하드웨어와 가장 가까이 있는 운영체제를 잘 알아야한다 또한, 오류 메세지에 대한 깊은 이해가 필요한 경우 특히 중요하고 취업시장에서 개발자의 필수 지식으로 자리 잡고 있다