It is just my opinion, so don't you attack me. please!
But if this posting has some incorrect informations, you comment about that
Please!!
Process
- Process
· 프로세스란? 실행중인 프로그램, 너무 단순한 대답이죠? 그렇다면 실행중이라는 의미는 무엇일까요? 디스크에 있던 프로그램을 메모리에 적재하여 OS의 제어를 받는 상태가 되었다는 것이다. 이는 자신만의 메모리 영역이 있음을 의미합니다.
· 프로그램이란? 컴파일된 코드, 전역 변수, 상수, 정적인 데이터 등을 포함하는 정적 개체입니다.
· 프로그램이 프로세스가 되면 얻는 것은 무엇인가? 메모리에 적재되면 OS의 힘을 빌려 CPU를 점유하거나 메모리, 파일에 접근하기도 하고 입출력 장치로부터 자원을 얻을 수도 있는 상태가 됩니다. 또한 프로세스 개별로 현재 활동을 나타내는 PC 등 여러 레지스터를 포함하게 됩니다.
· PCB(process control block)
OS가 관리하는 OS kernel 자료구조로서 여러가지 정보를 가지고 있습니다.
· kernel-level context
OS가 관리상 사용하는 정보: process state, process id, scheduling information, priority 등
CPU 수행 관련 하드웨어 값: program counter, registers
파일 정보: open file 정보
· user-level context
메모리 정보: code, data, stack의 위치 정보
Data structure of PCB
· 힙과 스택 메모리가 서로 맊나게 되면 메모리가 소진되었다는 의미를 가집니다.
· 특수 레지스터 – PC & SP(주소를 기억하여 영역을 기억함, 유저와 커널 공통으로 사용함.)
· context-switching: Registers 에 PCB에 문맥정보들을 저장한다. 그리고 다른 프로세스의 문맥정보를 PCB에서 메모리로 로드하고 OS가 다른 프로세스를 실행합니다.
· Case of context-switching:
1.시분할 기반의 스케줄링이 있을 경우
2.인터럽트로 인한 CPU 선정을 당하는 경우
3.프로세스 스스로 I/O요청할 경우
4.프로세스 스스로 다른 프로세스가 보낼 시그널에 대한 대기 요청을 하여 CPU를 반납할 경우프로세스 상태 전이
· Running
CPU를 점유하고 있는 상태, OS에 의하여 CPU를 회수 당하기 전까지는 Running 상태로 있게 됩니다.
비 자발적으로 회수를 당할 경우 ready 상태로 전이, 자발적으로 반납할 경우 blocked로 전이
즉, 비 자발적은 Running의 조건은 되지만 CPU를 강제로 빼앗긴 상태이고 자발적은 무엇인가 자원이 부족하거나 I/O 때문에 기다려야하기때문에 스스로 CPU를 반납하는 것입니다.
· 프로세스의 실행 모드
사용자 모드: 사용자나 라이브러리 코드가 실행되고 있는 상태
커널 모드: 시스템 콜을 하여 커널 내부로 진입하여 커널의 코드부분이 실행되는 상태
· Blocked(대기) 상태: 대기 중에는 CPU는 필요 없어서 반납하게 되고, 사건의 종류 별로 대기큐에 들어가게 됩니다. I/O의 경우는 대기중에도 진행이 되고, 완료되면 Interrupt를 발생시키고 ready 상태로 가게됩니다.
· Suspended: 메인 메모리에도 적재되지 못한 상태
· 프로세스가 I/O System call 이나 time-interrupt를 받게 되면 문맥 교환이 일어난다. 하지만 I/O이외의 System call이나 ISR을 수행하는 것에는 문맥 교환이 일어나지 않습니다.
· process의 중단
중단 상태는 일시정지 상태라고 보면 좋습니다. 중단 상태에 있는 프로세스는 시스템 부하를 증가시키지 않고 차단되어 있기 때문입니다. 또한 중단 상태의 프로세스는 어떠한 이벤트가 발생할 때 즉시 실행 상태로 갈 수 있다.
· 중단이 발생하는 경우
1.시스템에 장애가 발생한 경우
2.프로세스에 의심스러운 부분이 있을 경우
3.처리할 작업이 너무 많을 경우