프로세스 [운영체제 수업]
날짜 : 2023년 3월 16일
오늘 수업 주제
: 프로세스
오늘 배운 내용 요약
:
프로세스의 구조
프로세스 실행 중 생성 시스템 호출을 이용하여 새로운 프로세스 생성 가능.
프로세스 생성 순서로 부모 - 자식 관계 형성 (계층 구조)
프로세스 생성 세부 작업 순서
->프로세스에 프로세스 식별자 할당
-> 주소 공간과 PCB 공간 할당
-> PCB 초기화
-> 링크 걸기
-> fork()를 이용하여 자식 프로세스 생성
자식 프로세스 생성 시
복사 프로세스 = 자식
복사 원본 프로세스 = 부모
복사를 할 때, 주소 공간과 PCB의 내용을 전부 복사함.
exec()를 통해 원하는 값으로 덮어씀.
Init 프로세스 = 운영체제 실행 시 처음 생성되는 프로젝트
-> 코드,데이터 영역 생성 + 힙, 스택 영역 생성 + PCB 제작
프로세스의 종료
- 프로세스가 마지막 명령 실행 후 종료 / 삭제 요청
- about()함수로 프로세스 종료
- 자식 프로세스가 종료되지 않으면 기다림
종료 상황
->자식 프로세스가 할당된 자원을 초과하여 사용할 때
->더 이상 할당된 작업이 없을 때
프로세스의 비정상적 종료
- 부모가 먼저 종료되거나 자식 프로세스가 비정상적인 종료가 됐을 경우
- 좀비 프로세스
- 메모리를 많이 차지함.
- 컴퓨터가 느려짐.
- 해결은 재부팅
프로세스의 제거
-> 프로세스 파괴
-> 사용하던 자원 반환
-> PCB 회수
-> 자식 프로세스는 부모 프로세스 삭제 시 자동 제거
-> 프로그램 변경 사항은 디스크에 저장
프로세스의 중단과 재시작
->실행 중인 프로세스를 재시작해서 시스템 부하를 줄임
->다중 프로그래밍 환경에서의 중단은 입출력 요구 또는 자원 부족 상태
-장시간 중단 시 할당된 자원 반환
프로세스 스케줄러
PCB에 우선순위를 사용하여 준비큐에 있는 프로세스를 처리한다.
준비 상태에 있는 프로세스는 입출력중심 프로세스와 CPU 준심 프로세스로 구분한다.
입출력 중심 : 속도가 느림 / 빠른 응답 요구에 높은 우선 순위 / CPU를 짧게, 자주 사용
CPU 중심 : CPU를 길게 사용, 사용 횟수를 줄여서 균형을 유지한다.