728x90
10-1. 프로세스 개요
프로세스는 실행중인 프로그램을 의미
프로세스의 생성 : 보조기억장치에 저장된 프로그램을 메모리에 적재 후 실행
- 프로세스 직접 확인하기
포그라운드 프로세스 : 사용자가 볼 수 있는 실행 프로세스
백그라운드 프로세스 : 사용자가 보지 못하는 실행 프로세스
서비스 : 사용자와 상호작용X, 정해진 일만 수행하는 백그라운드 프로세스
- 프로세스 제어 블록(PCB)
수행되는 프로세스 실행 순서 관리 및 CPU와 같은 자원 배분
프로세스 식별을 위한 정보 저장
프로세스 생성 시 제작, 프로세스 실행 후 폐기
프로세스 ID : 특정 프로세스 식별 번호(고유)
레지스터 값 : 프로세스의 실행 시 이전 사용 레지스터 중간값 복원(작업을 이어 실행)
프로세스 상태 : 해당 프로세스의 상태 정보 저장
CPU 스케쥴링 정보 : 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보 저장
메모리 관리 정보 : 프로세스의 메모리 저장 위치, 베이스, 한계 레지스터 등의 정보 저장
사용한 파일 & 입출력장치 목록 : 특정 입출력장치 및 파일 사용 시 PCB에 명시
- 문맥 교환
문맥 : 하나의 프로세스 수행 재개를 위해 기억해야할 특정 정보(PCB에 기록되는 정보)
-> 프로세스의 CPU 사용시간 초과 및 예기치 못한 상황 발생 시 문맥 백업
문맥 교환 : 기존 프로세스 문맥 백업 및 새 프로세스 실행을 위한 문맥 복구 과정
- 프로세스의 메모리 영역
1. 코드 영역(정적 할당 영역)
텍스트 영역이라고도 지칭, 기계어로 이루어진 명령어 저장(read-only)
2. 데이터 영역(정적 할당 영역)
프로그램의 실행 동안 유지할 데이터 저장(ex.전역 변수), 크기 변동X
3. 힙 영역(동적 할당 영역)
사용자 직접 할당이 가능한 영역, 메모리 공간 사용 후 반환 필수(미반환 시 메모리 누수 발생)
4. 스택 영역(동적 할당 영역)
데이터의 일시적 저장공간, 일시적 데이터 저장(ex.매개, 지역 변수), 힙 영역과 반대되는 저장 메모리 주소값
10-2. 프세스 상태와 계층 구조
운영체제는 프로세스의 다양한 상태를 PCB에 기록관리 및 프로세스 계층적 관리
- 프로세스 상태
1. 생성 상태
메모리에 적재되어 PCB를 할당받은 상태(곧바로 실행X)
2. 준비 상태
차례가 되지 않아 대기 중인 CPU 할당 직전 상태
3. 실행 상태
CPU를 할당받고 실행 중, 할당된 시간만큼만 CPU 사용 가능
할당된 시간 전부 사용 시 준비 상태, 도중 입출력 장치 사용으로 대기할 시 대기 상태로 변경
4. 대기 상태
실행 상태 도중 입출력 장치 실행으로 잠시 대기중인 상태
5. 종료 상태
프로세스 종료 및 정리
- 프로세스 계층 구조
프로세스 실행 도중 시스템 호출로 다른 프로세스 생성 가능
부모 프로세스 : 새 프로세스를 생성한 프로세스
자식 프로세스 : 부모에 의해 생성된 프로세스
- 프로세스 생성 기법(자식 프로세스 생성 과정)
< 복제와 옷 갈아입기 >
1. 부모 프로세스의 fork
2. 자식 프로세스의 exec
fork : 스스로의 복사본을 생성하는 시스템 호출(복제)
exec : 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출(옷 갈아입기)
10-3. 스레드
스레드는 실행의 단위, 하나의 프로세스는 여러개의 스레드 보유 가능
- 프로세스와 스레드
기존의 프로세스는 한번에 하나의 일을 처리 -> 단일 스레드 프로세스
스레드의 개념 도입 후에 여러 일을 한번에 처리 가능 -> 멀티 스레드 프로세스
스레드 : 프로세스를 구성하는 실행흐름의 단위
실행에 필요한 최소한의 정보를 유지하며 프로세스 자원 공유 및 실행
- 멀티 프로세스와 멀티 스레드
멀티 프로세스 : 여러 프로세스를 동시 실행하는 것
멀티 스레드 : 여러 스레드로 프로세스를 동시 실행하는 것
-> 단일 스레드 프로세스를 여러개 실행과 여러 스레드로 프로세스 하나를 실행의 차이
프로세스끼리는 자원 공유X, 스레드끼리는 자원 공유O -> 프로세스 여러개 실행은 "낭비"
하지만 자원 공유는 곧 하나의 스레드에 문제 발생 시 다른 스레드에 영향을 미치는 "단점"
'컴퓨터 구조 + 운영체제 > 혼자 공부하는 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
_운영체제_ 12. 프로세스 동기화 (0) | 2023.12.19 |
---|---|
_운영체제_ 11. CPU 스케줄링 (0) | 2023.12.19 |
_운영체제_ 09. 운영체제 시작하기 (1) | 2023.12.03 |
_컴퓨터 구조_ 07. 보조 기억 장치 (1) | 2023.11.26 |
_컴퓨터 구조_ 06. 메모리와 캐시 메모리 (1) | 2023.11.25 |