03. 운영체제 Process

민주·2023년 10월 31일
0

CS

목록 보기
6/22

프로세스

현재 실행중인 프로그램. 문맥 = 상태.

queue에 들어가서 실행을 기다리고 있음. (ex. ready queue, resource queue, I/O queue)

유기적으로 상태가 변경됨.

PCB

운영체제가 각 프로세스를 관리하기 위해 프로세스 당 유지하는 정보.

문맥 교환

CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정.
**SYstem call 이나 Interrupt 발생 시 반드시 context switch가 일어나는 것은 아님.

Scheduler

  • Long-term Scheduler : 시작할 때 어떤 것을 ready queue로 보낼지 결정
  • Short-term Scheduler : 어떤 프로세스를 다음에 running 시킬지
  • Medium-term Scheduler : 프로세스에게서 memory를 뺏는 문제

Thread

basic unit of CPU utilization. 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.

Process Management

  • 부모 프로세스가 자식 프로세스를 생성
  • 프로세스의 트리 형성
  • 자원의 공유 (정도에 따른 모델이 나뉨)

Process Termination

자발적 종료(exit) : 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌.
비자발적 종료(abort) :
1) 자식이 할당 자원의 한계치를 넘어섬.
2) 자식에게 할당된 task가 더이상 필요하지 않음
3) 부모가 종료함

fork() 시스템 콜

int main()
{
             pid_t pid;
             printf("Before fork() call\n");
             pid = fork();

             if (pid == 0)
                 printf("This is Child process. PID is %d\n", pid);
             else if (pid > 0)
                 printf("This is Parent process. PID is %d\n", pid);
             else
                 printf("fork() is failed\n");
             return 0;
}

fork() 시스템 콜

int main()
{
                 printf(execute is\n");
                 execl("/bin/ls", "ls", "-al", NULL); 
                 perror("execl is failed\n");       //에러 코드 출력
                 exit(1);                                //에러 코드 전달
}

wait() 시스템 콜

exit() 시스템 콜

profile
일단 가보면 뭐든 있겠지

0개의 댓글