CS
정리 - 운영체제
아잠만_
2024. 10. 30. 15:29
운영체제란
- 시스템의 자원과 동작을 관리하는 소프트웨어
- 프로세스, 저장장치, 네트워킹, 사용자, 하드웨어를 관리
메모리
메모리 구조: code, data, heap, stack
- 코드 영역
- 실행할 프로그램의 코드(소스 코드)
- 데이터 영역
- 전역 변수
- 정적 변수
- 힙 영역
- 사용자의 동적 할당(데이터가 동적 할당)
- 런타임에 크기가 결정됨
- 스택 영역
- 함수의 호출 정보
- 지역변수
- 매개변수
- 컴파일 타임에 크기가 결정
커널
- 인간의 심장과 같음
시스템 콜
- 커널로부터 핵심적인 기능을 제공받는지
프로세스 및 스레드 관리
프로세스
- 실행중인 프로그램
- 각각의 독립된 메모리 영역(code, data, stack, heap)을 할당 받는다
스레드
- 프로세스 안 실행 단위
- 프로세스 안에 스레드 여러 개가 존재하여 code와 data, heap은 공유하지만 stack은 스레드마다 각각 따로 할당한다
자원할당 및 관리
CPU관리 : CPU 스케줄링
- 준비 큐 있는 프로세스에 대해 CPU 할당하는 방법
- 스케줄링 알고리즘
- 선점형 스케줄링
- 비선점형 스케줄링
메모리관리 : 가상 메모리
- 모든 프로세스에게 메모리를 할당하기에는 메모리의 크기가 한계가 있어서 사용하는 방법
- 사용하는 부분만 메모리에 올리고, 나머지는 디스크에 보관하는 기법
데드락
- 프로세스가 자원을 얻지 못해 다음 작업 못하는 상태
- 발생 조건이 4가지가 동시에 발생되어야 발생
- 상호 배제(Mutual exclusion)
- 자원은 한번에 한 프로세스만이 사용
- 점유 대기(Hold and wait)
- 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해서는 대기하는 프로세스가 있어야한다.
- 비선점(No preemption)
- 다른 프로세스에 할당된 자원은 사용이 끝날 떄까지 강제로 뺏앗을 수 없어야 한다.
- 순환 대기(Circular wait)
- 프로세스의 집합에서 순서대로 자원이 대기하며 원 처럼 순환하여 자원을 요구한다.
- 상호 배제(Mutual exclusion)
파일/디렉터리 관리
- 파일 시스템