STUDY/이론
[컴퓨터공학개론] 운영체제 학습일지
7alswn
2024. 9. 4. 00:59
*온라인 강의: FastCampus 초격차 패키지 : 현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오
OT
운영체제: 자원을 관리하고 할당하는 특별한 프로그램
운영체제 핵심부, 커널(kernel): https://kernel.org
해당 수업에서 운영체제 == 커널
이중 모드
- 커널 모드: 커널 영역 코드 실행 가능, OS 서비스 제공받음(입출력 가능)
- 사용자 모드: 커널 영역 코드 실행 불가능, OS 서비스 제공 못받음(입출력 불가능)
→ 시스템 콜: OS 서비스를 제공받기 위해 커널 모드로 전환(SW 인터럽트의 일종)
OS 핵심 서비스
- 프로세스 관리
- 자원(CPU, 메모리, 보조기억장치, 입출력 장치) 관리 접근 및 할당
- 파일 시스템 관리
*strace: 시스템 콜을 추척하기 위한 도구
프로세스와 스레드
프로세스: 실행 중인 프로그램, 같은 프로그램도 별도의 프로세스가 될 수 있음
커널 영역 - 프로세스 제어 블록(PCB)
- PID(PPID)
- 레지스터
- 스케줄링 정보
- 메모리 정보
- 사용한 파일 정보
- 입출력장치 정보
→ OS는 PCB를 토대로 다양한 프로세스들을 관리함
문맥 교환
자원의 개수 < 프로세스의 개수 → 문맥 교환
- 문맥(context): 실행을 재개하기 위해 기억해야 할 정보
- 문맥 교환: 여러 프로세스들이 번갈아가며 실행되는 원리
사용자 영역
- 코드 영역(텍스트 영역): 실행 가능한 코드; 기계어로 이루어진 명령어 / Read-only
- 데이터 영역: 프로그램이 실행되는 동안 유지할 데이터(e.g. 전역 변수)
- 힙 영역: 사용자(개발자)가 직접 할당 가능한 공간
- 스택 영역: 임시로 저장되는 영역(e.g. 매개 변수, 지역 변수)
- 힙: 낮은 → 높은 주소로 할당
- 스택: 높은 → 낮은 주소로 할당
- 주소 중복 방지
리눅스 프로세스(task) 상태 확인
*$top 실행 후 S에 해당하는 내용
- R: Running: 실행 상태
- S: Sleeping: 대기 상태
- W: Waiting: 준비 상태
- S: Stopped: 종료 상태
- Z: Zombie: 프로세스 종료 후 자원이 반환되었지만, 커널 영역에 프로세스가 남아있는 상태
fork-exec 시스템 콜
: 계층적 구조로 프로세스가 생성되는 원리
- fork: 복사본 만들기
- exec: 새로운 코드로 대체(덮어쓰기)
스레드
- 프로세스를 구성하는 실행 흐름의 단위
- 각기 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택
- 자원을 공유 안 하는 프로세스(통신 제외)와는 다르게 스레드끼리는 프로세스의 자원을 공유함
CPU 스케줄링
스케줄링 큐 = 줄, OS는 큐여도 FIFO 아님
- 준비 큐: CPU 이용을 기다리는 프로세스들의 큐
- 대기 큐: 대기 상태 프로세스들의 큐(입출력 요청)