Operating System
-
[Operating System] 프로세스 동기화 : 동기화 기법Operating System 2024. 5. 20. 11:30
여러 프로세스 동기화 기법 중뮤텍스 락, 세마노, 모니터에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제' >동기화의 두 가지 종류(실행 순서 제어, 상호 배체) 중 상호 배제를 위한 동기화 도구입니다.자물쇠 역할을 하여 임계구역을 관리합니다. [ 뮤텍스 락 구현 방법 ]자물쇠 역할 : 프로세스들이 공유하는 전역 변수 lock임계 구역을 잠그는 역할 : acquire 함수- 프로세스가 임계 구역에 진입하기 전에 호출- 임계 구역이 잠겨 있다면 임계 구역이 열릴 때까지(lock이 false가 될 때까지) 임계 구역을 반복적으로 확인(이를 busy waiting이라고 합니다. 반복적으로 계속해서 확인하는 이러한 방식은 좋은 방식이 아닙니다.)- 임..
-
[Operating System] 프로세스 동기화 : 동기화란Operating System 2024. 5. 19. 22:15
프로세스 동기화에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받게 되는데, 이 과정에서 자원의 일관성을 보장해야합니다.동기화란 크게 두 가지를 의미합니다.- 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 - 상호 배제 : 동시에 접근해서는 안 되는 자원 즉, 공유가 불가능한 자원에 하나의 프로세스만 접근하게 하기 실행의 문맥을 갖는 모든 대상은 동기화 대상이기에 스레드도 동기화 대상입니다. [ 실행 순서 제어를 위한 동기화 예시: Reader Writer Problem ]Writer : Book.txt 파일에 값을 저장하는 프로세스Reader : Book.txt 파일에..
-
[Operating System] CPU 스케줄링 : 알고리즘Operating System 2024. 5. 19. 20:55
다양한 CPU 스케줄링 알고리즘에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제' FCFS (First Come First Served) 스케줄링준비 큐에 삽입된 순서대로 처리하는 비선점형 스케줄링 방식먼저 CPU를 요청한 프로세스부터 CPU 할당 [ 단점 ] : 프로세스들이 기다리는 시간이 매우 길어질 수 있다( = 호위 효과)는 부작용이 있습니다. SJF (Shortest Job First) 스케줄링선입 선처리 스케줄링의 호위 효과를 방지하기 위한 스케줄링CPU 사용이 긴 프로세스는 나중에 실행, CPU 사용 시간이 짧은 프로세스는 먼저 실행기본적으로 비선점형 스케줄링이지만, 선점형 스케줄링 방식으로도 구현할 수 있습니다. [ 장점 ]..
-
[Operating System] CPU 스케줄링 : 개요Operating System 2024. 5. 19. 17:55
CPU 스케줄링의 개요를 우선순위 스케줄링을 기반으로 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 프로세스마다 빨리 처리해야 하는 프로세스, 천천히 처리해도 괜찮을 프로세스 등을 효율적으로 처리하기 위해 운영체제는 각 프로세스의 PCB마다 우선순위를 설정하여 효율적으로 처리합니다. Ex) 입출력 집중 프로세스 / CPU 집중 프로세스 우선순위 비교: 보통 입출력 작업이 많은 프로세스( = 입출력 집중 프로세스)의 우선순위는 CPU 작업이 많은 프로세스 ( = CPU 집중 프로세스)의 우선순위보다 높습니다. 입출력 작업이 많은 프로세스는 CPU 집중 프로세스에 비해 대기상태에..
-
[Operating System] 운영체제 : 스레드Operating System 2024. 5. 18. 17:51
운영체제의 스레드에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'스레드(thread)는 프로세스를 구성하는 실행 흐름의 단위입니다.하나의 프로세스는 하나 이상의 스레드를 가질 수 있습니다. [ 스레드의 구성 요소 ]스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보를 가지고 있습니다.하지만, 모든 스레드들은 프로세스의 자원을 공유하면서 실행이 됩니다. 요즘 사용되는 운영체제를 보면, CPU에게 처리해야 될 작업을 전달할 때 프로세스 단위로 전달하기보다는 스레드 단위로 전달하는 경우가 많습니다. 프로세스끼리는 자원을 공유하지 않습니다 → 독립적으로 실행 스레드끼리는 같은 프로세스 내..
-
[Operating System] 운영체제 : 프로세스 상태와 계층 구조Operating System 2024. 5. 18. 17:17
프로세스 상태와 계층 구조에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'프로세스 상태는 생성 상태, 준비 상태, 실행 상태, 대기 상태, 종료 상태로 나눌 수 있습니다. 생성 상태이제 막 메모리에 적재되어 PCB를 할당 받은 상태준비가 완료되었다면 준비 상태로 준비 상태CPU를 할당 받아 실행할 수 있지만, 자신의 차례가 아니기에 기다리는 상태자신의 차례가 된다면 실행 상태로 ( = 디스패치) 실행 상태CPU를 할당 받아 실행 중인 상태할당된 시간 모두 사용 시 (타이머 인터럽트 발생 시) 준비 상태로실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태로 대기 상태프로세스가 실행 도중 입출력장치를 사용하는 경우 접어드는 상태..
-
[Operating System] 운영체제 : 프로세스 개요Operating System 2024. 5. 18. 16:02
프로세스와 PCB, 프로세스의 메모리 영역에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'실행 중인 프로그램을 프로세스라고 합니다.포그라운드 프로세스 (foreground process) : 사용자가 볼 수 있는 공간에서 실행되는 프로세스백그라운드 프로세스 (background process) : 사용자가 볼 수 없는 공간에서 실행되는 프로세스 백그라운드 프로세스는 다음 두 가지 프로세스로 나눌 수 있습니다.사용자와 직접 상호작용이 가능한 백그라운드 프로세스사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스 = 데몬(daemon), 서비스(service) 프로세스들은 돌아가며 한정된 시간 만큼만 CPU를 이용합니다.- 자신의 차..
-
[Operating System] 운영체제 : 운영체제의 큰 그림Operating System 2024. 5. 17. 19:52
운영체제의 큰 그림: 커널, 이중모드와 시스템 호출, 운영체제의 서비스 종류에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'운영체제가 제공하는 기능은 다양하지만, 공통적이고 핵심적인 서비스는 존재합니다.(자원에 접근/조작하는 기능, 프로그램이 안전하고 올바르게 실행되게 하는 기능, ...)이러한 운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel)이라고 합니다. 일반 프로그램은 자원에 직접 접근이 불가능합니다. 오직 운영체제를 통해서만 접근하도록 하여 자원을 보호합니다.(운영체제는 자원 접근을 대행하는 일종의 문지기 입니다.)이중모드란 CPU가 명령어를 실행하는 모드을 크게 사용자 모드과 커널 모드로 구분하는 방식입니다. [ 사용자..