4주차 (1/22 ~ 1/28)
chapter. 09 : 운영체제 시작하기
chapter. 10 : 프로세스와 스레드
chapter. 11 : CPU스케줄링
➡️ 운영체제의 핵심 서비스 1 : 프로세스 관리
프로세스란(process)?
예를 들어 사용자가 '카톡'을 더블클릭하면 보조기억장치에 있던 프로그램이 메모리에 적재되어 실행되는데, 이렇게 메모리에 적재되어 실행되는 순간 프로그램은 프로세스가 된다.
프로세스 실행 과정
1.모든 프로세스는 실행 위해 CPU 필요하다.
2.일반적으로 CPU는 한 번에 하나의 프로세스 실행한다.
📌 그러므로 프로세스들은 일정 시간
동안 번갈아가면서
CPU 사용해야만 한다.
일정 시간
: 정해진 시간만큼만 CPU 이용하고, 시간이 끝났음을 알리는 '타이머 인터럽트' 발생하면 자신의 차례 양보하고 다음 차례가 올때까지 가다린다.
번갈아 가면서
: 이것을 '문맥교환' 이라고 하고, 문맥교환을 하려면 그동안 실행되었던 프로그램의 정보들을 백업해 두어야 하는 데, 이 정보들은 'PCB' 에 저장되어 있다.
📌 문맥교환
📌 PCB
프로세스 관련 정보 저장
하는 자료구조커널영역
에 만들어짐(프로그램)문맥교환 | PCB |
---|---|
📌 메모리의 사용자영역에 프로세스 어떻게 배치되는가?
프로세스가 실행되면 메모리 커널영역에는 PCB가 생성된다.
📌 프로세스는 각각 독립된 메모리 영역(코드, 데이터, 스택, 힙)을 할당받는다.
📌 코드영역과 데이터 영역은 정적할당 영역으로 크기가 고정되어 있는 반면
스택영역과 힙영역은 크기가 변하는 동적할당 영역이다.
명령어
가 저장전역변수
를 저장지역변수
, 매개 변수
를 저장프로그래머가 직접 할당
할 수 있는 저장 공간🫠 스택은 높은 주소에서 낮은 주소로 할당, 힙은 낮은 주소에서 높은 주소로 할당된다.
✔️ 높은 주소, 낮은 주소를 잘 이해하지 못해서 찾아보았다.
참고할 만한 사이트
스택이 높은 주소에서 낮은 주소로 쌓이는 이유
메모리구조에 대한 좀 더 자세한 설명
프로세스 상태
프로세스 계층 구조
프로세스는 실행 도중 시스템 호출
을 통해 다른 프로세스를 생성할 수 있음.
운영체제는 프로세스가 프로세스를 낳는 계층적인 구조
로써 프로세스 관리한다.
이때 새 프로세스를 생성하는 프로세스를 부모 프로세스, 부모프로세스에 의해 생성된 프로세스를 자식 프로세스라고 한다.
프로세스 생성 기법
프로세스는 실행 도중
시스템 호출
을 통해 다른 프로세스를 생성할 수 있음.
📌 프로세스는 복제(fork)시스템 호출
과 옷갈아입기(exec) 시스템 호출
반복하여 프로세스 계층구조 이룬다.
✅ 복제(fork)시스템 호출
✅ 옷갈아입기(exec) 시스템 호출
✅ 하드웨어 스레드
: 하나의 코어가 동시에(한번에) 실행 할 수 있는 명령어의 단위
✅ 소프트웨어 스레드
: 하나의 프로그램에서 독립적으로 실행되는 작업 단위 또는 프로세스를 구성하는 실행의 흐름 단위
여기서 다루는 것은 소프트웨어 스레드
프로세스와 스레드
단일 스레드 프로세스 : 한번에 하나의 작업을 처리하는 프로세스
멀티 스레드 프로세스 : 한번에 여러 작업을 (동시에) 처리하는 프로세스
스레드의 구성
스레드는 실행에 필요한 최소한의 정보
만 유지한 채 프로세스 자원 공유
하며 실행됨.
최소한의 정보
프로세스 자원 공유
멀티프로세스와 멀티스레드
✔️ "hello,os"를 화면에 3번 출력하는 작업
✅ 멀티프로세스로 실행 시
: fork 하며 프로세스 복제
: 모든 자원이 복제되어 메모리에 적재됨
: 메모리에 동일한 내용이 중복해서 존재하게 됨-> 메모리 낭비문제 발생
✅ 멀티스레드로 실행 시
: 각기 다른 스레드ID, 레지스터값, 스택 가짐
: 나머지 메모리 영역(코드, 데이터, 힙)영역 자원 공유함
: 멀티프로세스에 비해 메모리 효율적 사용
: 자원공유하기 때문에 하나의 스레드 문제 생기면 다른 스레드도 문제 생길 가능성 있음
p. 304의 확인 문제 1번 풀고 인증하기
1. 생성 상태( new )
: 메모리에 방금 적재되어 PCB할당받은 상태
2. 준비 상태( ready )
: CPU할당 받기를 기다리는 상태
3. 실행 상태( running )
: CPU할당 받아 실행되는 상태
4. 종료 상태( terminated )
: 프로세스가 종료된 상태로
5. 대기 상태( blocked )
: 입출력장치의 작업을 기다리는 상태