STUDY/이론

[컴퓨터공학개론] 운영체제 학습일지

7alswn 2024. 9. 4. 00:59

*온라인 강의: FastCampus 초격차 패키지 : 현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오

OT

운영체제: 자원을 관리하고 할당하는 특별한 프로그램

운영체제 핵심부, 커널(kernel): https://kernel.org

해당 수업에서 운영체제 == 커널

이중 모드

  1. 커널 모드: 커널 영역 코드 실행 가능, OS 서비스 제공받음(입출력 가능)
  2. 사용자 모드: 커널 영역 코드 실행 불가능, 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 이용을 기다리는 프로세스들의 큐
  • 대기 큐: 대기 상태 프로세스들의 큐(입출력 요청)