일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- do it! 한권으로 끝내는 웹 기본 교과서 html+css+자바스크립트 웹 표준의 정석
- 혼자 공부하는 컴퓨터구조+운영체제
- html 기본문서
- CSS
- 코딩 자율학습
- TS
- cpu 성능 향상 기법
- Do it
- Git
- propschildren
- 코딩자율학습
- JS
- 메모리와 캐시 메모리
- react
- html 실무
- html 문서작성
- JavaScript
- HTML
- 자바스크립트
- css배경
- css필수 속성
- 코딩 자율학습 html + css + 자바스크립트
- CPU
- 이벤트
- css박스 모델
- do it! html+css+자바스크립트 웹 표준의 정석
- html 필수태그
- https://api.jquery.com/
- 코딩 자율학습 html + css + 자바스크립트]
- 코딩
- Today
- Total
게으른 나에게
[혼자 공부하는 컴퓨터구조+운영체제] "chapter10. 프로세스와 스레드" 본문
10-1 프로세스 개요
프로세스: 실행중인 프로그램.
프로그램은 실행되기 전까지 보조기억장치에 있는 데이터 덩어리.
프로세스 생성한다: 보조기억장치에 저장된 프로그램 메모리에 적재하고 실행하는 순간 프로그램 프로세스.
프로세스 직접 확인하기
윈도우: 작업관리자 [프로세스]탭
유닉스: Ps명령어
포그라운드 프로세스: 사용자가 볼 수 있는 공간에서 실행되는 프로세스.
백그라운드 프로세스: 사용자가 보이지 않는 공간에서 실행되는 프로세스. 사용자와 직접 상호작용 o / 상호작용 x.
데몬: 유닉스 체계의 운영체제의 백그라운드 프로세스.
서비스: 윈도우 운영체제의 백그라운드 프로세스.
프로세스 제어 블록
모든 프로세스는 실행 위해 CPU 필요. CPU 자원 한정. 동시에 사용 x. 프로세스는 한정된 시간만 CPU 이용.
시간이 끝남을 알리는 인터럽트(타이머 인터럽트) 발생으로 시간 조절.
운영체제는 번갈아 수행되는 프로세스의 실행순서 관리. 프로세스 CP를 비롯한 자원 배분. -> 운영체제 프로세스 제어 블록(PCB) 이용.
프로세스 제어 블록: 프로세스와 관련된 정보를 저장하는 자료 구조. 해당 프로세스 식별 위해 꼭 필요한 정보들 저장.
PCB는 커널 영역에 생성.
"운영체제도 프로세스들 사이에 PCB로 특정 프로세스 식별. 해당 프로세스 처리 위해 필요한 정보 판단."
PCB는 프로세스 생성시에 만들어지고 실행 끝나면 폐기.
새로운 프로세스 생성되었다 = 운영체제가 PCB 생성했다.
프로세스가 종료되었다 = 운영체제가 PCB를 폐기했다.
PCB에 담기는 정보는 차이 존재.
프로세스 ID(PID)
특정 프로세스 식별하기 위해 부여하는 고유한 번호.
같은 일을 수행하는 프로그램일지라도 두번 실행하면 PID가 다른 두개의 프로세스가 생성.
윈도우 작업관리자에서 확인 가능.
레지스터값
프로세스 자신의 실행 차례 때 사용했던 레지스터 중간값 모두 복원. 그대로 실행 위해.
PCB안, 해당 프로세스 실행하며 사용했던 프로그램 카운터 및 레지터 값 저장.
프로세스 상태
프로세스가 어떤 상태인지 상태정보 PCB에 기록, 저장.
CPU 스케줄링 정보
프로세스가 언제 어떤 순서로 CPU 할당 받을지에 대한 정보 PCB 기록.
메모리 관리 정보
프로세스마다 메모리에 저장된 위치 다름. 주소 값 위치 정보 필요.
PCB에는 베이스 레지스터, 한계 레지스터 값, 페이지 테이블 정보(프로세스 주소) 등 정보 담김.
사용한 파일과 입출력 장치 목록
프로세스 실행과정에 사용된 정보 PCB에 해당 내용 명시 및 기록.
문맥 교환
하나의 프로세스에서 다른 프로세스로 실행순서 넘어갈 때 중간 정보 백업 필요. 다음 차례 떄 이전까지 실행 내용 다시 실행 재개.
문맥: 하나의 프로세스 수행 재개 위해 기억해야 할 정보.
하나의 프로세스 문맥은 해당 프로세스의 PCB에 표현.
문맥교환: 기존 프로세스의 문맥 PCB에 백업, 새로운 프로세스 실행 위해 문맥을 PCB로 복구해 새로운 프로세스 실행. 여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리.
문맥교환 자주 일어나면 빨리 수행되기 때문에 실제로 프로세스들이 동시에 실행되는 것 처럼 보임.
프로세스 메모리 영역
사용자 영역에 프로세스 배치: 코드 영역, 데이터 영역, 힙 영역, 스택 영역.
코드 영역(= 텍스트 영역)
데이터(전역변수)가 아닌 CPU가 실행할 명령어 담김. -> 쓰기 금지. 읽기 전용 공간.
정적 할당 영역: 크기가 고정된 영역. 코드 영역. 데이터 영역.
동적 할당 영역: 크기가 변할 수 있는 영역. 힙영역. 스택 영역
힙 영역
사용자가 직접 할당할 수 있는 저장 공간.
프로그래밍 과정에서 힙 영역에 메모리 공간 할당했다면 언젠간 해당 공간 반환 필요.
메모리 공간 반환한다. = 운영체제 메모리 공간 사용하지 않겠다.
메모리 누수: 메모리 공간 반환x, 할당한 공간 메모리 내 계속 남아 메모리 낭비 초래.
스택 영역
데이터를 일시적으로 저장하는 공간.
매개변수. 지역변수.
일시적으로 저장할 데이터, 스택 영역 PUSH.
더이상 필요하지 않는 데이터, 스택영역 POP 사라짐.
힙 영역: 메모리의 낮은 주소 -> 높은 주소 할당.
스택 영역: 높은 주소 -> 낮은 주소 할당.
10-2 프로세스 상태와 계층 구조
프로세스는 상태 다양.
운영체제는 프로세스의 상태 PCB에 기록, 관리.
운영체제는 동시에 실행되는 수많은 프로세스 계층적 관리.
프로세스 상태
하나의 프로세스는 여러 상태 거치며 실행.
운영체제는 프로세스의 상태를 PCB를 통해 인식하고 관리.
프로세스가 가질 수 있는 상태.
1. 생성상태
프로세스를 생성중인 상태. 이제 막 메모리에 적재되어 PCB 할당 받은 상태.
생성상태 -> 실행할 준비 완료 프로세스 -> 준비 상태, CPU 할당 기다림.
2. 준비 상태
실행 차례가 되지 않아 기다리고 있는 상태. 차례가 되면 CPU 할당 받아 실행 상태.
디스패치: 준비 상태인 프로세스가 실행상태 전환.
3. 실행상태
CPU 할당 받아 실행중인 상태.
할당된 일정 시간동안만 CPU 사용.
타이머 인터럽트가 발생 -> 준비상태 -> 대기상태(입출력 장치의 작업 끝날때 까지 기다림)
4. 대기 상태
프로세스 실행 도중 입출력장치 사용하는 경우. 입출력장치 작업 기다리는 상태.
입출력 작업 완료 -> 프로세스 준비 상태(CPU 할당 대기)
5. 종료 상태
프로세스가 종료된 상태.
운영체제는 PCB와 프로세스가 사용한 메모리 정리.
프로세스 상태 다이어 그램: 컴퓨터 내의 여러 프로세스.
운영체제는 이 상태를 PCB에 기록하며 프로세스 관리.
프로세스 계층 구조
프로세스는 실행 도중 시스템 호출 통해 다른 프로세스 생성.
부모 프로세스: 새 프로세스를 생성한 프로세스.
자식 프로세스: 부모 프로세스 의해 생성된 프로세스.
각가 다른 프로세스. 각기 다른 PID 가짐.
부모 프로세스 -> 자식 프로세스 -> 자식 프로세스
프로세스가 프로세스 낳는 계층적인 구조로써 프로세스 관리.
프로세스 계층 구조: 트리 구조.
프로세스 생성 기법
복제와 옷 갈아입기: 부모 프로세스를 통해 생성된 자식 프로세스
fork: 부모 프로세스가 자신의 복사본을 자식 프로세스로 생성.
exec: 만들어진 복사본(자식프로세스)가 자신의 메모리 공간을 다른 프로그램으로 교체. 새로운 프로그램 내용으로 전환해 실행하는 시스템 호출. 호출되고 나머지 영역은 초기화.
fork, exec : 시스템 호출
자식 프로세스는 부모 프로세스의 복사본 이기 때문에 자식 프로세스에 상속. (값이나 저장된 메모리 위치 다름)
프로세스 계층 구조 이루는 과정: fork, exec가 반복되는 과정.
10-3 스레드
스레드: 실행의 단위. 프로세스를 구성하는 실행의 흐름 단위.
하나의 프로세스는 여러개 스레드 가짐.
스레드 이용하면 하나의 프로세스에 여러부분 동시 실행 가능.
프로세스와 스레드
단일 스레드 프로세스: 실행의 흐름 단위가 하나.
스레드 개념 도입.
하나의 프로세스가 한번에 여러일 동시에 처리 가능. 프로세스 구성하는 여러 명령어 동시 실행 가능. 프로세스 구성하는 실행 단위.
스레드: 프로세스 내 각 다른 스레드 ID, 프로그램 카운터 값, 레지스터 값, 스택 으로 구성.
프로세스 스레드는 실행에 필요한 최소한의 정보(프로그램 카운터를 포함한 레지스터, 스택)만을 유지한 채 프로세스 자원 공유하며 실행.
멀티프로세스와 멀티 스레드
멀티프로세스: 여러 프로세스 동시 실행.
멀티 스레드: 여러 스레드로 프로세스 동시 실행.
차이점
프로세스 끼리 자원을 공유하지 않음. 스레드 끼리는 같은 프로세스 내 자원 공유.
프로세스 fork해 같은 작업하는 동일한 프로세스 동시 실행.
-모든 자원 복제 돼 메모리 적재. -> 낭비
-같은 프로그램 실행 위해 메모리 동일한 내용 중복해서 존재하는 것.
스레드들 자원 공유.
프로세스 병행 실행보다 메모리 더 효율적 사용.
단점
-멀티스레드 환경에서 하나 스레드 문제 -> 프로세스 전체 문제
출처
'My Study > 서적 공부' 카테고리의 다른 글
[혼자 공부하는 컴퓨터구조+운영체제] "chapter12. 프로세스 동기화" (0) | 2024.08.17 |
---|---|
[혼자 공부하는 컴퓨터구조+운영체제] "chapter11. CPU 스케줄링" (1) | 2024.08.11 |
[Do it! 한권으로 끝내는 웹 기본 교과서 HTML+CSS+자바스크립트 웹 표준의 정석] "자바스크립트 기초-넷째마당: 15 함수와 이벤트" (0) | 2024.08.04 |
[혼자 공부하는 컴퓨터구조+운영체제] "chapter9. 운영체제 시작하기" (0) | 2024.08.04 |
[혼자 공부하는 컴퓨터구조+운영체제] "chapter8. 입출력장치" (4) | 2024.08.04 |