issues
search
1two13
/
CS
혼자 공부하는 컴퓨터 구조 + 운영체제
2
stars
0
forks
source link
⭐️⭐️⭐️[프로세스와 스레드] 프로세스 개요
#22
Open
1two13
opened
1 year ago
1two13
commented
1 year ago
프로세스
실행 중인 프로그램
을 말한다. 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 그 프로그램은 프로세스가 된다.
포그라운드 프로세스
사용자가 보는 앞에서 실행되는 프로세스
백그라운드 프로세스
사용자가 보지 못하는 뒤에서 실행되는 프로세스
사용자와 직접 상호작용할 수 있는 프로세스도 있고, 사용자와 상호작용하지 않고 묵묵히 정해진 일만 수행하는 프로세스도 있다.
후자의 프로세스를 유닉스 운영체제에서는 데몬, 윈도우 운영체제에서는 서비스라고 부른다.
1two13
commented
1 year ago
프로세스 제어 블록(PCB)
운영체제는 PCB를 이용하여 빠르게 번갈아 수행되는
프로세스의 실행 순서를 관리
하고, 프로세스에 CPU를 비롯한
자원을 배분
한다.
프로세스와 관련된 정보를 저장하는 자료구조이다. 즉, 특정 프로세스를
식별하기 위해 꼭 필요한 정보들이 저장
된다. 마치 상품에 달린 태그와도 같다.
커널 영역
에 생성된다.
프로세스 생성 시에 만들어
지고 실행이 끝나면 폐기된다.
1two13
commented
1 year ago
PCB에 담기는 정보 6️⃣
운영체제마다 차이가 있지만 대표적인 정보는 6가지가 있다.
1. 프로세스 ID(PID)
특정 프로세스를 식별하기 위해 부여하는 고유한 번호이다.
같은 일을 수행하는 프로그램이더라도 2번 실행하면 PID가 다른 2개의 프로세스가 생성된다.
2. 프로세스 상태
현재 프로세스의 상태를 저장한다.
3. 레지스터 값
자신의 실행 차례가 돌아오면 이전까지 사용했던 레지스터의 중간값들을 모두 복원한다.
4. CPU 스케줄링 정보
프로세스가
언제, 어떤 순서로 CPU를 할당받을지
에 대한 정보가 기록된다.
5. 메모리 관리 정보
메모리 주소
를 알 수 있는 정보가 담긴다.
프로세스마다 메모리에 저장된 위치가 다르기 때문에 어느 주소에 저장되어 있는지에 대한 정보가 있어야 한다.
베이스 레지스터, 한계 레지스터, 페이지 테이블
정보들이 담긴다.
6. 사용한 파일과 입출력장치 목록
프로세스가 실행 과정에서 특정 입출력장치나 파일을 사용하면 PCB에 해당 내용이 명시된다.
1two13
commented
1 year ago
문맥 교환
기존 프로세스의 문맥을 PCB에
백업
하고, 문맥을 PCB로부터
복구하여 새로운 프로세스를 실행
하는 것이다.
문맥 교환을 너무 자주 하면
오버헤드
가 발생할 수 있기 때문에 문맥 교환이 자주 일어난다고 해서 반드시 좋은 건 아니다.
문맥
: 중간 정보, 즉
하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
이다.
PCB에 기록되는 정보들
을 문맥이라고 봐도 무방하다.
1two13
commented
1 year ago
⭐️⭐️⭐️ 프로세스의 메모리 영역 4️⃣
프로세스는
사용자 영역에
크게 4가지의 영역으로 나뉘어 저장된다.
1. 코드 영역(= 텍스트 영역)
실행할 수 있는 코드, 즉 기계어로 이루어진
명령어
가 저장된다.
읽기 전용
공간이다.
크기가 고정된
정적 할당 영역
이다.
2. 데이터 영역
프로그램이 실행되는 동안 유지할 데이터가 저장된다.
ex.
전역 변수
크기가 고정된
정적 할당 영역
이다.
3. 힙 영역
프로그래머가 직접 할당할 수 있는 저장 공간
이다.
힙 영역에 메모리 공간을 할당했다면
언젠가는 해당 공간을 반환해야 한다.
메모리 누수: 반환하지 않으면 할당한 공간은 메모리에 계속 남아 메모리 낭비를 초래한다.
크기가 변할 수 있는
동적 할당 영역
이다.
일반적으로
메모리의 낮은 주소에서 높은 주소로 할당
된다.
4. 스택 영역
데이터를 일시적으로 저장
하는 공간이다.
ex. 매개변수, 지역 변수
크기가 변할 수 있는
동적 할당 영역
이다.
일반적으로
메모리의 높은 주소에서 낮은 주소로 할당
된다. 그래야만 힙 영역과 스택 영역에 데이터가 쌓여도 새롭게 할당되는 주소가 겹치지 않기 때문이다.
프로세스
포그라운드 프로세스
백그라운드 프로세스