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!!
· 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.처리할 작업이 너무 많을 경우