1. 메모리 계층 구조
- 사용 목적에 따라 메모리를 여러 계층으로 둠
- 레지스터, 캐시 메모리, RAM, 하드디스크로 구성
- CPU접근 속도: 레지스터 > 캐시메모리 > RAM > 하드디스크
2. 시스템 콜
- 운영체제의 커널 모드에 접근해 필요한 기능을 수행하기 위해 프로세스에서 호출하는 함수
- 프로세스 제어, 파일 조작, 장치 조작 등을 수행함
3. 프로세스
- 실행 중인 하나의 프로그램으로, 하나 이상의 스레드를 가짐
- PCB에 프로세스 현재 상태, PID(Process ID), 부모 PID 등을 저장함
- 프로세스마다 독립된 메모리 공간을 가짐
- 스택: 지역함수, 함수의 매개변수, 반환주소 값 저장
- 힙: 동적 메모리 할당
- 데이터: 전역 변수, 정적 변수, 배열, 구조체 저장, 세부족으로 초기화된 데이터는 데이터 영역에, 초기화되지 않은 데이터는 BSS 영역에 저장됨
- 코드: 기계어
- 프로세스의 상태
- 생성(new) : 프로세스가 PCB를 가지고 있지만 OS로부터 승인을 받기 전
- 준비(ready) : OS로부터 승인받은 후 준비 큐에서 CPU할당을 기다림
- 실행(running) : 프로세스가 CPU를 할당받아 명령어를 실행함
- 대기(waiting) : 프로세스가 입출력이나 이벤트 발생을 기다려야 해서 CPU 사용을 멈추고 기다림
- 종료(terminated) : 프로세스 실행 종료
- 프로세스의 생성
- fork() 함수 호출
- 부모 프로세스는 자식 프로세스의 PID를, 자식 프로세스는 0을 반환함
4. 스레드
- 프로세스에서 실제 실행되는 흐름의 단위
- 각 스레드는 스택 영역을 할당받음
- 스택을 제외한 영역은 다른 스레드와 공유
5. 멀티 프로세스와 멀티 스레드
- 멀티 프로세스
- 응용 프로그램을 여러 개의 프로세스로 구성하는 것
- 프로그램을 하나의 프로세스로 구성하는 것보다 안정적임
- 콘텍스트 스위칭으로 오버헤드가 발생함
- 독립된 메모리 공간을 갖기 때문에 IPC를 사용함
- 멀티 스레드
- 스레드를 여러 개 생성해 작업을 처리하는 것
- 스택을 제외한 영역은 다른 스레드와 공유하므로 데이터 동기화 필요
- 콘텍스트 스위칭 시 멀티 프로세스 대비 오버헤드가 적음
6. 콘텍스트 스위칭
- 멀티 프로세스 환경에서 CPU가 다른 프로세스를 처리하기 위해 처리 중인 프로세스를 변경하는 것
- 처리하던 프로세스 정보를 저장하고, 다음으로 처리할 프로세스 정보를 레지스터에 로드하면서 오버헤드 발생
7. 프로세스 동기화
- 멀티 프로세스 환경에서 공유 자원의 일관성을 보장하기 위한 방법
- 상호배제 기법 이용
- 뮤텍스: 락(lock)을 가진 한 프로세스만 임계 영역에 접근 가능
- 세마포어: 정해진 개수의 프로세스만 임계 영역에 접근 가능
8. 교착 상태
- 상호 배제: 하나의 공유 자원을 한 개의 프로세스만 사용할 수 있음
- 점유와 대기: 프로세스가 최소 하나의 자원을 점유하고 있는 상태에서 추가로 다른 프로세스가 사용중인 자원을 점유하기 위해 대기함
- 비선점: 다른 프로세스가 할당된 자원을 뺏을 수 없음
- 환형 대기: 프로세스가 자신의 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원 요구
9. CPU 스케줄링
- 목적: 모든 프로세스를 공평하게 실행시키기 위함
- 스케줄링 알고리즘의 종류
- FCFS(First Come First Serve): 비선점형, 선입선출
- SJF(Shortest Job First): 비선점형, 실행 시간이 짧은 것부터 실행
- RR(Round Robin): 선점형, 타임 슬라이스(또는 타임 퀀텀) 동안만 프로세스 실행 후 교체
- SRTF(Shrotest Remaining Time First): 선점형, 남은 프로세스 중 실행 시간이 가장 짧은 프로세스 실행
- 스케줄러의 종류
- 장기 스케줄러: 어떤 프로세스를 준비 큐에 넣을지 결정함
- 단기 스케줄러: 준비 큐에 있는 프로세스 중 어떤 프로세스를 CPU에 할당할지 결정함
- 중기 스케줄러: 메모리에 로드된 프로세스 수 관리
10. 비연속 메모리 할당
- 페이징:
- 프로세스의 메모리 영역과 물리 영역을 일정 크기로 분할하는 방식
- 프로세스의 메모리 영역을 페이지로, 물리 메모리 영역을 프레임으로 나눔
- 내부 단편화 문제 발생 가능
- 세그먼테이션
- 프로세스를 논리적 단위로 분할하는 방식
- 데이터를 보호하기 쉬움
- 스택 세그먼트 영역에서 스택 오버플로 발생 가능
11. 가상 메모리
- 메모리 공간에서 한계를 극복하기 위해 고안한 방식으로, 프로세스 일부만 메모리에 올림
- 많은 프로세스를 메모리에 로드할 수 있음
- 요구 페이징: 필요한 페이지만 메모리에 로드, 페이지 폴트 발생 가능
- 스레싱: 가상 메모리 환경에서 다중 프로그래밍 정도가 높아지면서 페이지 폴트가 빈번히 발생해 CPU 이용률이 오히려 낮아지는 증상
'CS' 카테고리의 다른 글
2.1 네트워크 계층 (1) | 2023.11.28 |
---|---|
1. 운영체제 질문 (0) | 2023.11.25 |
캐시 메모리 (0) | 2023.11.25 |
가상 메모리 (1) | 2023.11.25 |
메모리 관리 전략 (1) | 2023.11.23 |