내 잡다한 노트
챕터3 프로세스의 연산 본문
프로세스의 구조
코드 영역, 데이터 영역, 스택 영역이 있다. 힙 영역이란것도 있다.
코드영역과 데이터 영역은 정적인 영역이고, 스택 영역과 힙 영역은 동적인 영역이다.
코드 영역은 읽기 밖에 안되고 수정할 수 없다. 데이터 영역은 읽고 쓰기가 가능하다.
스택 영역은 a함수가 b함수를 호출할 때 b함수가 끝나면 a 함수로 다시 돌아가야 하는데 그때 a의
메모리 주소 정보와 b 함수로 보내는 파라미터들을 보관하는 영역이라고 한다.
fork()
프로세스가 자식 프로세스를 만드는 것이다. 어떻게 만드냐면 그대로 복사를 한다.
하지만 바뀌는 정보도 있다. 프로세스 구분자와 메모리 관련 정보, 부모 프로세스 구분자와 자식 프로세스 구분자가 그렇다.
부모와 자식 관계로 만들면 부모 프로세스가 자식 프로세스의 자원을 회수하기가 용이하고 책임관계를 명확히
할 수 있게 된다.
exec()
기존의 프로세스를 새로운 프로세스로 전환하는 함수.
기존에 있던 프로세스 구조를 재활용한다. 구조를 그대로 사용을 해서 새롭게 만들 필요가 없다보니 효율적이다.
기존 정보들은 폐기되고 새로운 정보를 채워넣는다.
프로세스 구분자, 부모 자식 프로세스 구분자와 메모리 관련 정보는 바뀌지 않는다.
지금 output을 하다보니 fork에서 바뀌는 정보가 exec에선 바뀌지 않는다.
코드영역과 데이터영역, 스택 영역만이 새롭게 리셋된다.
고아프로세스, 좀비 프로세스
고아는 자식은 있지만 부모가 없는 것. 말 그대로 부모가 비정상적으로 종료가 돼 자식만 있게 돼서 자식이 종료가
됐지만 자원을 회수할 부모가 없게 돼 메모리 낭비가 발생하게 되는 경우이다.
좀비는 자식이 종료를 했는데도 부모가 자원회수를 하지 않을 경우 발생한다.
프로세스 계층 구조
트리 구조를 이룬다.
여러 작업의 동시 처리가 용이하다.
계층 구조로 만들어 프로세스 간의 책임 관계가 분명해져 시스템을 관리하기가 수월하다. 특히 자원ㅇ르 회수할 때
편리하다.
'운영체제' 카테고리의 다른 글
챕터4. 스케줄링의 개요 (0) | 2022.07.26 |
---|---|
챕터3. 스레드 (0) | 2022.07.24 |
챕터3 프로세스 제어 블록과 문맥교환 (0) | 2022.07.24 |
챕터3 프로세스의 개요 (0) | 2022.07.24 |
챕터2 병렬 처리 (0) | 2022.07.08 |