프로그램이 프로세스가 되는 과정
가. OS가 프로그램을 메모리에서 가져온다.
나. 동시에 작업지시서를 작성한다. (프로세스 제어블럭) ->필수
다. 프로세스 제어블럭에는 다양한 정보가 들어있다.
프로세스 제어블럭( in 정보 )
가. 프로세스 구분자
나. 메모리 관련 정보
다. 각종 중간 값
⇒ 프로세스 제어블럭은 운영체제 영역엣 만들어 진다.
프로그램이 프로세스가 된다는 것은, 운영체제로 부터 "프로세스 제어블럭"을 얻는 것이다.
프로세스가 종료된다는 건 해당 프로세스 제어블럭이 폐기 된다는 것이다.
OS도 프로그램이다. 부트스트랩에 의해 실행됨
컴퓨터에는 사용자 프로세스와 커널 프로세스가 섞여서 실행
가. 일반 사용자의 "사용자 프로세스 "
나 . 운영체제의 "커널 프로세스"
시분할 시스템 (4가지)
: 생성 → 준비 → 실행 → 완료
1) 생성 상태
: 프로세스가 메모리에 올라와 실행 준비, 프로세스 제어블럭 생성
2) 준비 상태
: 생성된 프로세스가 CPU를 얻을때 까지 기다리는 상태
3) 실행 상태
: CPU를 얻어 실행 / 주어진 시간이 끝났지만 작업이 끝나지 않은면 → 준비상태로 감
4) 완료 상태
: 프로세스 제어블럭 소멸
디스 패치(dispatch) - 미리 가져오기
: 준비상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 CPU 스케줄러의 작업
인터럽트(타임아웃)
: 타임슬라이스 후 다시 준비 상태로 돌아가는 것
→ 정확히는 "클럭으로부터의 인터럽트"
→ 호율성을 고려하여 "대기 상태" 추가
인터럽트 시스템에서 프로세스가 입출력 요구하면
.
대기상태
입출력을 요구한 프로ㅔ스가 입출력이 완료될 때 까지 기다리는 상태를 대기상태라고 한다.
효율성을 높이기 위해 입출력을 요청한 프로세스를 실행 상태에 두지 않고 대기상태로 따로 분류한다.
⇒ 입출력이 완료되면 바로 실행되지 않고 X, 대기상태로 간다.
활성 상태
: 생성 / 준비 / 실행 / 대기 / 완료
.
휴식 상태
: 프로세스가 작업을 일시적으로 쉬고 있는 상태
⇒ 제어블럭 유지, 멈춘 시점부터 재시작 가능
.
보류 상태
: 프로세스가 메모리에서 잠시 쫒겨난 상태 ( = 일시적 상태)
⇒ 보류상태가는 이유
: 대부분 컴퓨터 성능을 떨어뜨리거나 실행을 미루어도 큰 지장이 없는 프로세스
[보류 상태를 포함한 프로세스 상태]
⇒ 보류상태로 들어간 프로세스는 메모리 밖으로 쫒겨나 "스왑 영역"에 보관된다.
(구성)
가. 포인터 : 프로세스 제어블럭의 첫번째 블럭에 저장 ( 큐 구현할때 이용)
나. 프로세스 상태 : 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등 (두 번째 블럭에 저장)
다. 프로그램 구분자 : 운영체제 내에서 프로세스를 구별하기 위한 것
라. 프로그램 카운터 : 다음에 실행 될 명령어의 위치 저장
마. 프로세스 우선순위 : CPU 스케줄러가 준비상태에서 실행상태로 옮길 때 사용
사. 각종 레지스터 정보 : 자신이 사용하던 레지스터의 중간 값
아. 메모리 관리 정보
자. 활당된 자원 정보 : 입출력 자원, 오픈 파일
차. 계정 정보
카. 부모 프로세서 구분자, 자식 프로세스 구분자
프로세스 작업이 바뀌면서 일어남
⇒ 제어블럭을 교환하는 작업
일어나는 경우
1) 프로세스 작업이 끝났을 때
2) 인터럽트에 걸렬을 때 (Time Slice)
코드 영역 : 코드(소스) 프로세스 본문 기술
데이터 영역 : 프로세스의 데이터 영역
스택 영역 : 운영체제가 부수적으로 관리하는 데이터 영역
<시스템 호출>
fork() - 생성, 복사
ex) 크롬 -> 복사
fork()의 과정
프로세스 구분자가 바뀜
메모리 관련정보가 바뀜 (위치가 다르기 때문에)
부모 구분자/ 자식 구분자가 바뀜
fork()의 장점
프로세스 생성 속도가 빠르다
추가 자원 없이 자원을 상속할 수 있다
시스템 관리를 효율적으로 할 수 있다.
(자식 종료 ⇒ 부모가 정리)
Exec() - 프로세스 전환
fork() 후 Exec() - 복사후 수정
exec() : 기존의 포로세스를 새로운 프로세스로 전환하는 함수
(목적)
: init 프로세스가 루트로 -> fork()->exec() 자식 프로세스 생성
(장점)
여러 작업의 동시 처리가 가능
종료된 프로세스의 자원을 회수하는데 유용
4 미아 프로세스
: 부모 프로세스가 먼저 종료 되거나 / 자식 프로세스의 비정상적인 종료로 인한 연락 두절 되는 경우
: 프로세스가 정상적으로 회수되지 않은 프로세스
멀티 태스크
: 워드나 프린터 같이 서로 독립적인 태스크
멀티 스레드
: 워드 안에 그림판, 사진, 맞춤법 검사 등과 같은 것