✔️운영체제
프로그램 실행에 필요한 자원을 할당하고, 올바르게 프로그램이 실행되도록 돕는 프로그램
운영체제는 메모리 내 커널 영역에 적재되어 실행된다.
사용자 영역: 커널 영역을 제외한 나머지 영역으로 사용자가 이용하는 응용 프로그램이 적재되는 공간
커널: 운영체제의 핵심 기능을 담당
이중모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
사용자 모드는 커널 영역의 코드를 실행할 수 없는 모드로,일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행된다.
사용자 모드로 실행되는 일반적인 응용 프로그램은 자원에 접근할 수 없다.
커널 모드는 커널 영역의 코드를 실행할 수 있는 모드로, 자원에 접근할 수 있다.
시스템 호출: 운영체제 서비스를 제공받기 위해 사용자 모드에서 커널 모드로 전환하는 방법
대표적인 운영체제 서비스로, 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리가 있다.
✔️프로세스와 스레드
포그라운드 프로세스: 사용자가 보는 앞에서 실행되는 프로세스
백그라운드 프로세스: 사용자가 보지 못하는 뒷편에서 실행되는 프로세스
데몬/서비스: 사용자와 상호작용하지 않는 백그라운드 프로세스
운영체제는 프로세스의 실행 순서를 관리하고 프로세스에 자원을 배분하기 위해 PCB를 활용한다.
프로세스 제어 블록(PCB): 프로세스와 관련된 정보를 저장하는 자료 구조로, 커널 영역에 생성
PCB에는 프로세스 ID(PID), 레지스터 값, 프로세스 상태, CPU 스케줄링 정보, 메모리 관리 정보, 사용한 파일과 입출력장치 목록이 담긴다.
문맥: 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
문맥 교환: 기존 프로세스의 문맥을 PCB에 백업하고 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것
프로세스 사용자 영역은 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장된다.
정적 할당 영역(크기가 고정된 영역)
코드 영역 : 기계어로 이루어진 명령어가 저장되며 읽기 전용 공간
데이터 영역: 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
동적 할당 영역
힙 영역: 프로그래머가 직접 할당할 수 있는 저장 공간
스택 영역: 데이터를 일시적으로 저장하는 공간
프로세스 상태
운영체제는 프로세스의 상태를 PCB를 통해 인식하고 관리한다.
생성 상태: 프로세스를 생성 중인 상태로 PCB를 할당받은 상태이다.
준비 상태: CPU의 할당받기 위해 실행을 기다리고 있는 상태
실행 상태: CPU를 할당받아 실행 중인 상태
대기 상태: 입출력장치의 작업을 기다리는 상태
종료 상태: 프로세스가 종료된 상태, 프로세스가 종료되면 운영체제는 PCB와 프로세스가 사용한 메모리 저장
대부분의 운영체제는 프로세스 계층 구조로, 프로세스를 관리한다.
프로세스 계층 구조: 프로세스가 프로세스를 낳는 트리 구조
부모 프로세스: 새 프로세스를 생성한 프로세스
자식 프로세스: 부모 프로세스에 의해 생성된 프로세스
프로세스가 생성되는 과정
1. 부모 프로세스가 fork 시스템 호출을 통해 자신의 복사본을 자식 프로세스로 생성
2. 복사본(자식 프로세스)은 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체
🌱시스템 호출 종류
프로세스 관리
fork() : 새 자식 프로세스 생성
execve(): 프로세스 실행(메모리 공간을 새로운 프로그램의 내용으로 덮어씌움)
exit(): 프로세스 종료
waitpid(): 자식 프로세스가 종료할 때까지 대기
파일 관리
open(): 파일 열기
close(): 파일 닫기
read(): 파일 읽기
write(): 파일 쓰기
stat(): 파일 정보 획득
디렉터리 관리
chdir(): 작업 디렉터리 변경
mkdir(): 디렉터리 생성
rmdir(): 비어 있는 디렉터리 삭제
파일 시스템 관리
mount(): 파일 시스템 마운트
unmount(): 파일 시스템 마운트 해제
스레드: 프로세스를 구성하는 실행의 흐름 단위
멀티프로세스: 여러 프로세스를 동시에 실행하는 것
멀티스레드: 여러 스레드로 프로세스를 동시에 실행하는 것
기본적으로 프로세스끼리는 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내의 자원을 공유한다.
✔️CPU 스케줄링
일반적으로 운영체제는 우선순위가 높은 프로세스 순으로 CPU 자원을 배분한다.
CPU 스케줄링: 공정하고 합리적으로 CPU 자원을 배분하는 방법
입출력 집중 프로세스: 입출력 작업이 많은 프로세스로 실행 상태보다는 입출력을 위한 대기 상태에 많이 머무른다.
CPU 집중 프로세스: CPU 작업이 많은 프로세스로 실행 상태에 더 많이 머무른다.
스케줄링 큐: 자원을 사용하고 싶은 프로세스들을 줄 세워 구현하고 관리하는 것
준비 큐: CPU를 이용하고 싶은 프로세스들이 서는 줄
대기 큐: 입출력장치를 이용하고 싶은 프로세스들이 서는 줄
🌟프로세스 스케줄링 유형
선점형 스케줄링:
하나의 프로세스가 자원 사용을 독점할 수 없는 스케줄링 방식
문맥 교환 과정에서 오버헤드 발생 가능성
선점형 스케줄링 알고리즘: SRT, 다단계 큐, 다단계 피드백 큐, 라운드 로빈
SRT
가장 짧은 시간이 소요되는 프로세스를 먼저 수행, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점된다.
다단계 큐
작업들을 여러 종류 그룹으로 분할, 여러 개의 큐를 이용하여 상위단계 작업에 의한 하위단계 작업이 선점된다.
다단계 피드백 큐
FCFS와 라운드 로빈 스케줄링 기법을 혼합
새로운 프로세스는 높은 우선순위, 프로세스의 실행시간이 길어질수록 점점 낮은 우선순위 큐로 이동
라운드 로빈
프로세스는 같은 크기의 CPU 시간을 할당하고 프로세스가 할당된 시간 내에 처리 완료를 못하면 준비 큐 리스트의 가장 뒤로 보내진다. CPU는 대기 중인 다음 프로세스로 넘어간다.
비선점형 스케줄링:
하나의 프로세스가 자원 사용을 독점할 수 있는 스케줄링 방식
모든 프로세스가 골고루 자원을 사용할 수 없다.
비선점형 스케줄링 알고리즘: FCFS, SJF, HRN, 기한부, 우선순위
FCFS
프로세스가 대기 큐에 도착한 순서에 따라 CPU를 할당
SJF
프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원 점유
HRN
대기 중인 프로세스 중 대기시간이 긴 프로세스일 경우 우선순위가 높아지게 하여 우선순위를 결정
기한부
작업들이 명시된 시간이나 기한 내에 완료되도록 한다.
우선순위
각 프로세스 별로 우선순위가 주어지고, 우선순위에 따라 CPU를 할당한다.
동일 순위는 FCFS
기아 현상: 우선순위 스케줄링에서 발생하는 문제점으로 우선순위가 낮은 프로세스가 우선순위가 높은 프로세스들에 의해 실행이 계속 연기되는 현상
에이징: 기아 현상을 막기 위한 방법으로 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방법
✔️숙제
'공부' 카테고리의 다른 글
[혼공컴운]3주차_메모리와 캐시 메모리/보조기억장치/입출력장치 (0) | 2025.01.26 |
---|---|
[혼공컴운]2주차_CPU의 작동 원리/CPU 성능 향상 기법 (0) | 2025.01.19 |
[혼공컴운] 1주차_컴퓨터 구조/데이터/명령어 (0) | 2025.01.12 |
xgboost 모델 (0) | 2024.12.26 |
가설검정 (0) | 2024.11.30 |