본문 바로가기
사이버 보안/컴퓨터 구조

[혼공컴운] 4주차 정리

by Depth 2025. 7. 26.

💡 Chapter 09. 운영체제 시작하기
💡 Chapter 10. 프로세스와 스레드
💡 Chapter 11. CPU 스케줄링

위의 챕터들을 4주차에 학습하였고, 새롭게 알게되고 어려웠던 점은 아래와 같습니다. 


 

 

 

운영체제

항목 설명 예시
정의 컴퓨터 자원을 관리하고 응용 프로그램의 실행을 지원하는 가장 근원적인 프로그램 Windows, macOS, Linux, Android, iOS 등
자원의 의미 운영체제가 관리하는 자원(Resource) CPU, 메모리, 하드디스크, 네트워크 등 컴퓨터의 4대 핵심 부품 및 파일, 네트워크 패킷 등

 

 

커널 (Kernel)

구분 설명
정의 운영체제의 핵심 기능을 담당하는 가장 중심적인 부분
주요 역할 자원 관리: CPU, 메모리, 저장장치 등 핵심 자원 접근 및 제어
프로그램 보호: 응용 프로그램의 안전한 실행 환경 제공
규모 코드 라인 수가 수천만 줄에 달하는 거대한 소프트웨어
( 리눅스 커널: 약 2700만 줄 이상)
커널 제외 대상 사용자와 직접 상호작용하는 유저 인터페이스(UI)
GUI (그래픽 사용자 인터페이스),
CLI (명령줄 인터페이스)

실행 방식 이중 모드(Dual Mode)를 통해 시스템을 보호
- 커널 모드: 자원 접근이 가능한 핵심 실행 모드
- 사용자 모드: 자원 접근이 제한된 일반 프로그램 실행 모드

 

[ 운영체제의 핵심 서비스 ]

핵심 서비스 설명 주요 기능 및 관련 주제
① 프로세스 관리 실행 중인 프로그램, 즉 프로세스(Process)를 생성, 실행, 종료하며 효율적으로 관리하는 기능 기능: 프로세스 생성/소멸, 실행/중지, 상태 관리
관련 주제: 스레드, 동기화, 교착 상태(Deadlock)
② 자원 접근 및 할당 한정된 시스템 자원(CPU, 메모리 등)을 어떤 프로세스에 언제, 얼마나 할당할지 결정하고 분배하는 기능 CPU: CPU 스케줄링
메모리: 페이징(Paging), 스와핑(Swapping)
입출력 장치: 인터럽트(Interrupt) 처리
③ 파일 시스템 관리 디스크에 저장된 파일과 디렉터리를 체계적으로 관리하여 보관하고 쉽게 접근할 수 있도록 하는 기능 기능: 파일 생성, 삭제, 읽기, 쓰기, 권한 관리

 

 

 

시스템 호출 (System Call)

항목 설명
정의 사용자 프로그램이 운영체제(커널)의 기능을 사용하기 위한 공식적인 요청 방법 
목적 보안상의 이유로 자원에 직접 접근할 수 없는 프로그램이 커널에게 작업을 위임하기 위함
작동 원리 1. 요청: 프로그램이 시스템 호출 함수 실행
2. 인터럽트: 소프트웨어 인터럽트 발생
3. 모드 전환: 사용자 모드 → 커널 모드로 전환
4. 작업 수행: 커널이 요청된 기능(파일 I/O, 프로세스 관리 등)을 처리
5. 복귀: 작업 완료 후 다시 커널 모드 → 사용자 모드로 전환
핵심 이유 시스템 보호: 악성 코드나 오류로부터 시스템 자원을 안전하게 보호
자원 관리: 여러 프로그램의 자원 요청을 효율적으로 조율하고 관리
추상화: 프로그래머가 복잡한 하드웨어 제어 방식을 몰라도 되도록 편리한 인터페이스 제공
대표적인 예시 프로세스 관리: fork() (새 프로세스 생성), exit() (프로세스 종료)
파일 입출력: read() (읽기), write() (쓰기), open() (열기)
메모리 할당: brk(), mmap()

 

 

 

PCB (프로세스 제어 블록)

구분 설명
정의 운영체제가 프로세스를 관리하기 위해, 프로세스마다 유지하는 고유의 자료구조
역할 프로세스의 상태 정보를 저장하고, 문맥 교환(Context Switch) 시 실행 상태를 복원하는 데 사용

 

[ PCB 포함 정보 ]

구분 핵심 설명 포함 정보 
식별 정보 프로세스 고유 식별자 PID, PPID
프로세스 상태 현재 생명주기 상태 준비, 실행, 대기 등
CPU 컨텍스트 실행 재개를 위한 하드웨어 상태 프로그램 카운터(PC), 레지스터
메모리 정보 할당된 메모리 영역 정보 페이지 테이블 주소
스케줄링 정보 CPU 할당 순서 결정 정보 우선순위 (Priority)
계정/입출력 정보 자원 사용 및 할당된 장치 정보 CPU 사용 시간, 열린 파일 목록

 

✅ 문맥교환 (Context Switching)

구분 설명
정의 하나의 프로세스에서 다른 프로세스로 CPU 실행 권한을 넘겨주는 과정
문맥(Context) 해당 프로세스를 다시 실행하기 위해 필요한 모든 중간 상태 정보
(레지스터 값, 메모리 정보, 열린 파일 목록 등 )
교환 순서 1. 저장: 현재 프로세스(A)의 문맥을 PCB에 저장
2. 복원: 다음 프로세스(B)의 문맥을 PCB에서 로드
3. 전환: CPU 실행 주체가 A에서 B로 변경
발생 시점 타이머 인터럽트, 입출력 요청 등 스케줄링이 필요할 때 발생
효과 여러 프로세스가 동시에 실행되는 것처럼 보이게 하는 시분할 시스템의 핵심 원리

 

 

✅ 프로세스 상태와 전이

상태 (State) 설명 상태 전이
생성 상태 (New) 프로세스가 메모리에 적재되고 막 생성된 상태 New → Ready (프로세스 등록)
준비 상태 (Ready) CPU를 할당받기 위해 대기열에서 기다리는 상태 Ready → Running (스케줄러에 의해 선택 / 디스패치)
실행 상태 (Running) CPU를 점유하고 명령어를 수행 중인 상태 Running → Ready (타이머 인터럽트: 할당 시간 소진)
Running → Waiting (I/O 요청: 입출력 작업 필요)
Running → Terminated (작업 완료: 실행 종료)
대기 상태 (Waiting) 입출력(I/O) 작업이 완료되기를 기다리는 상태 Waiting → Ready (I/O 완료: 작업이 끝나고 신호 받음)
종료 상태 (Terminated) 모든 실행이 끝나고 자원이 정리되는 상태 (최종 상태, 더 이상 전이 없음)

 

 

프로세스 계층 구조

구분 설명 특징 및 예시
계층 구조 프로세스를 부모-자식 관계로 계층화하여 관리하는 구조 대부분의 OS에서 사용 (※ Windows는 예외)
부모/자식 프로세스 부모: 다른 프로세스를 생성한 주체
자식: 부모에 의해 생성된 프로세스
• 각자 고유 PID를 가짐
• 자식은 부모의 ID를 PPID로 저장
트리 구조 리눅스의 pstree 명령어로 확인 가능한 계층도 • 최상위 프로세스: systemd
• 예시: systemd → login → bash → vim

 

 

 프로세스 생성 기법 (fork vs exec)

구분 fork() (복제) exec() (교체)
핵심 기능 새로운 자식 프로세스를 생성 기존 프로세스의 내용을 새 프로그램으로 덮어씀
프로세스 수 1개 → 2개 (부모 + 자식) 1개 → 1개 (변화 없음)
메모리 부모의 메모리 내용을 그대로 복사 기존 메모리 내용을 지우고 새 프로그램으로 교체
PID 자식에게 새로운 PID가 부여됨 PID가 변경되지 않음

 

 

✅ 멀티 프로세스 vs 멀티 스레드

항목 멀티프로세스 (Multiprocess)  멀티스레드 (Multithread) 
정의 하나의 프로그램을 여러 개의 프로세스로 나누어 실행 하나의 프로세스 안에서 여러 개의 스레드로 나누어 실행
자원 공유 각 프로세스가 독립된 자원을 가짐 (메모리 분리) 모든 스레드가 프로세스의 자원을 공유 (메모리 공유)
통신 방식 IPC (파이프, 소켓 등)를 이용한 복잡한 통신 공유 메모리를 통해 간단하고 빠른 통신
안정성 하나의 프로세스에 문제가 생겨도 다른 프로세스에 영향 없음 하나의 스레드에 문제가 생기면 전체 프로세스가 종료될 수 있음
생성 비용 자원을 복제하므로 비용이 높고 속도가 느림 자원을 공유하므로 비용이 낮고 속도가 빠름

 

 

[ IPC : Inter-Process Communication | 프로세스간 통신 ]

개념  독립된 프로세스 간 데이터를 주고받는 통신 방법  (멀티프로세스 환경에서 사용)
종류 파일 기반 통신,  공유 메모리 기반 통신,   파이프/소켓 기반 통신

 

 

CPU 스케줄링

대분류 소분류 / 개념 설명 관련 내용 / 예시
스케줄링 CPU 스케줄링 운영체제가 CPU 자원을 여러 프로세스에 공정하고 효율적으로 배분하는 전략 시스템 전체 성능 최적화의 핵심
핵심 기준 프로세스 우선순위 단순한 도착 순서가 아닌, 프로세스의 긴급성과 중요도에 따라 처리 순서를 정하는 것 우선순위는 PCB(Process Control Block)에 저장되어 관리됨
프로세스 유형 I/O 바운드
(입출력 위주)
CPU 작업보다 입출력 작업이 많아 CPU 점유 시간이 짧음 우선순위 높게 부여
(예: 파일 복사, 비디오 재생)
  CPU 바운드
(계산 위주)
입출력보다 CPU 연산 작업이 많아 CPU를 오래 점유함 우선순위 낮게 부여
(예: 복잡한 연산, 프로그램 컴파일)

 

주요 스케줄링 큐

큐 종류 역할 프로세스 상태 특징
준비 큐
(Ready Queue)
CPU의 할당을 기다리는 프로세스들의 줄 준비
(Ready)
- 즉시 실행 가능한 상태
- CPU 스케줄러가 이 큐에서 다음 실행할 프로세스 선택
대기 큐
(Wait/Device Queue)
입출력(I/O) 작업의 완료를 기다리는 프로세스들의 줄 대기
(Waiting)
- 장치별로 별도의 큐가 존재 (예: 디스크 큐, 키보드 큐)
- I/O 작업이 완료되면 준비 큐로 이동하여 CPU 할당을 다시 기다림

 

 


선점형 vs 비선점형 스케줄링

구분 선점형 (Preemptive) 비선점형 (Non-Preemptive)
개념 실행 중인 프로세스를 중단시키고
다른 프로세스에 CPU를 할당할 수 있음 (강제 교체 O)
실행 중인 프로세스가 종료될 때까지
다른 프로세스가 CPU를 사용할 수 없음 (강제 교체 X)
장점 CPU 점유가 공정하고 응답 시간이 빠름 문맥 교환(컨텍스트 스위칭) 오버헤드가 적음
단점 잦은 문맥 교환(Context Switching)으로 인한 비용 발생 특정 프로세스의 CPU 독점으로 시스템 전체 반응성 저하 가능

 

 


스케줄링 알고리즘

알고리즘 방식/개념 스케줄링 방식 장점 및 단점
First Come
First Serve
(FCFS)
먼저 도착한 순서대로 처리 비선점형 장점: 단순하고 직관적
단점: 호위 효과(Convoy Effect)로 인한 평균 대기 시간 증가
Shortest Job First
(SJF)
실행 시간이 가장 짧은 작업을 우선 처리 비선점형 장점: 평균 대기 시간 최소화
단점: 실행 시간 예측이 어려움
Round Robin
(RR)
동일한 타임 슬라이스 할당 후 순환 선점형 장점: 공정성 확보, 빠른 응답 시간
단점: 문맥 교환 비용 증가 가능성
Shortest Remaining Time
(SRT)
남은 실행 시간이 가장 짧은 프로세스 우선 처리 선점형 장점: 평균 대기 시간을 더욱 단축
단점: 남은 시간을 계속 추적해야 하므로 복잡함
Priority
(우선순위)
각 프로세스의 우선순위에 따라 처리 선점형
/비선점형
장점: 중요도에 따른 유연한 스케줄링
단점: 기아 현상(Starvation) 발생 가능,
         에이징(Aging) 기법으로 보완
Multilevel
Queue
(MLQ | 다단계큐)
고정된 여러 큐에 프로세스를 배정 혼합형 장점: 프로세스 유형별로 다른 알고리즘 적용 가능
단점: 큐 간 이동이 없어 유연성 부족
Multilevel
Feedback Q
(MFQ |
다단계 피드백 큐) 

큐 간 이동이 가능한 다단계 큐 방식, 피드백을 통해 우선순위 조정 혼합형 장점: 유연성이 높고, 에이징 구현 용이
단점: 설계가 복잡하고 오버헤드가 큼

 

 

 

 

 

📓 기본숙제

P304 > 1. 다음은 프로세스 상태를 보여주는 프로세스 상태 다이어그램입니다. ① ~ 까지 올바른 상태를 적어보세요.

생성 상태

준비 상태

실행 상태

종료 상태

대기 상태

 

 

 

 

📎 참고

 

 

 

댓글