전공 수업 내용 정리 (문제 발생시 비공개합니다.)
프로그램과 프로세스
프로그램: 디스크에 저장된 수동적인 엔티티(binary sequence)
프로세스: 실행 중인 액티브 엔티티(execution sequence)
프로세스의 구성 요소
- 프로그램 코드: 실행될 명령어 집합
- 관련 데이터 세트: 프로그램 실행에 필요한 데이터
동적 저장공간 할당
- 스택(Stack): 함수 호출 시 리턴 주소와 지역 변수를 저장 (LIFO 구조)
- 힙(Heap): 동적 메모리 할당을 위해 사용
실행 순서와 스택 구조
스택 구조
- 스택 포인터(Stack Pointer): 스택 최상단 원소의 주소
- 스택 베이스(Stack Base): 스택 최하단 원소의 주소
- 스택 리미트(Stack Limit): 스택 최대 크기 제한
함수 호출 시 동작
- 함수 호출 시 리턴 주소를 스택에 저장(push)
- 함수 종료 시 리턴 주소를 참조하여 복귀(pop)
프로세스 제어 블록 (PCB)
⭐⭐⭐⭐운영체제가 각 프로세스를 관리하기 위해 사용하는 핵심 자료구조
운영체제의 핵심이다
PCB의 주요 역할
- 프로세스 상태 저장: 프로세스 중단 후 재개를 위해 PC(Program Counter)와 레지스터 상태 저장
- 프로세스 간 컨텍스트 스위칭 지원: CPU가 다른 프로세스로 전환될 때 필요한 정보 제공
PCB 구성 요소
- PID(Process ID): 고유 프로세스 식별자
- 프로세스 상태: New, Ready, Running, Blocked, Terminated 등
- 레지스터 상태: 프로그램 카운터, 스택 포인터 등
- 메모리 관리 정보: 페이지 테이블, 메모리 범위 등
- CPU 스케줄링 정보: 우선순위, CPU 점유 시간 등
- I/O 상태 정보: 열린 파일 목록, 할당된 입출력 장치 등
PCB는 일반적으로 커널 스택에 저장되며, 이중 연결 리스트로 관리됨.
프로세스 이미지
유저 레벨 문맥
- 사용자 프로그램과 데이터 및 실행 중 사용되는 스택 포함
시스템 레벨 문맥
- PCB와 같은 운영체제가 관리하는 정보 포함
프로세스 상태 모델
2-상태 모델
- Running: 현재 실행 중인 상태
- Not Running: 실행 대기 중 또는 대기 상태
단점: Not Running 상태의 모호함으로 인해 실용성이 낮음.
5-상태 모델
- New: 생성된 초기 상태
- Ready: 실행 준비 완료
- Running: CPU에서 실행 중
- Blocked: 특정 이벤트(I/O 작업 등) 대기
- Terminated: 실행 종료
다중 큐를 통해 효율적으로 관리 가능
7-상태 모델 (보류 상태 추가)
- Blocked/Suspend (블록/보류): 보조 메모리에서 이벤트 대기
- Ready/Suspend (준비/보류): 보조 메모리에 있지만 메인 메모리에 로드되면 즉시 실행 가능
보류 상태는 메모리 부족 문제를 해결하고 우선순위 기반 관리에 유용
디스패처와 컨텍스트 스위칭
디스패처(Dispatcher)
- Ready 상태에서 Running 상태로 전환 담당
- 컨텍스트 스위칭을 수행하며, 사용자 모드(User Mode)로 전환
- 프로세스가 다시 시작할 때 사용자 프로그램이 올바른 위치를 찾을 수 있도록 한다.
- 따라서 dispatcher의 처리속도가 빠르면 빠를수록, 시스템 성능이 향상된다.
프로세스 스위치
주요 원인
- 타이머 인터럽트
- 시스템 호출(Supervisor Call)
- 예외(Exception)
모든 인터럽트가 반드시 프로세스 전환을 의미하지는 않음.
'CS > OS' 카테고리의 다른 글
[운영체제] 프로세스 스케줄링 (0) | 2025.01.28 |
---|---|
[운영체제] 프로세스 관리 (0) | 2025.01.28 |
[운영체제] 오퍼레이팅 시스템 개요 (0) | 2025.01.28 |
[운영체제] 메모리 (0) | 2025.01.28 |
[운영체제] virtual box에서 ubuntu 설치 및 터미널 명령어 실행하기 (0) | 2023.07.09 |