ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Process Switch
    CS/OS(운영체제) 2022. 4. 12. 20:31
    728x90

    Mode Switch

    - 유저 모드와 커널 모드 사이의 프로세서를 변경하는 것

    - 모드 스위치는 현재 실행중인 상태의 프로세스의 상태를 변경하지 않고 발생할 수 있다.

    - 이 경우 내용의 저장/복원이 상대적으로 적은 오버헤드를 사용한다.

     

    Process Switch(context switch)

    - 한 프로세스에서 다른 프로세스로 프로세서를 변경하는 것.

    - 현재 프로세스의 프로세서 내용을 저장한다.

    - 현재 프로세스의 PCB를 업데이트한다. (Ready,Blocked,etc...)

    - 프로세서의 PCB를 적절한 큐로 이동한다.

    - 실행을 위한 다른 프로세스를 선택한다. (call schedule())

    - 선택된 프로세스의 PCB를 업데이트한다. (Running)

    - 메모리 관리를 위해 TLB를 업데이트한다.

    - 선택된 프로세스의 프로세서 내용을 복구한다.

     

    따라서, 프로세스 스위치는 모드 스위치보다 더 많은 노력을 필요로 한다.

    프로세스 스위치는 인터럽트 , 예외 , 시스템 콜 등의 상황에서 발생한다.

     

    Process Switch Overhead

    - PCB로부터 or PCB 안으로 내용을 저장/복원한다.

    - 프로세스의 상태를 업데이트한다.

    - 실행할 다음 프로세스를 찾는다.

    - TLB는 리로드 되어야 한다. (MMU)

    - 캐시의 지역성(시간&공간)을 상실한다. (그러므로 더 많은 캐시가 miss된다.)

     

    OS의 실행 모델

     

    Nonprocess Kernel

    - 보편적인 접근 방식중 하나, 흔한 다른 오래된 운영체제

    - 커널은 분리된 entity로써 실행된다.

     

    Execution with User Processes ( Common in OS )

    - 유저 프로세스의 내용 안에 있는 모든 OS 함수들을 실행한다.

    - 각 프로세스 이미지는 프로그램, 데이터 , 그리고 커널을 위한 스택을 포함한다.

    - 분리된 커널 스택은 커널 모드 안에서 프로세스가 실행되는 동안 사용된다.

     

    Process-Based Operating System ( Modular OS )

    - 몇몇의 중요하지 않은 OS 함수들은 분리된 프로세스들로써 실행된다.

     

    Kernel Stack

    - 각 프로세스들은 2개의 스택을 가지고 있다.

    User space stack - 유저 코드가 실행될 때 사용된다.

    Kernel space stack - 프로세스 내용 안에 커널 코드가 실행될 때 사용된다. (ex.시스템 콜 동안)

    이점 - 유저 스택이 corrupted 되더라도 커널은 실행할 수 있다.

           - 버퍼 오버플로우와 같은 공격에도 커널은 크게 영향받지 않는다.

     

    Schedule function (Selection function)

    - ready 상태의 프로세스들 사이에서 다음에 실행할 프로세스를 결정한다.

    - 스케줄 함수는 우선순위 또는 프로세스의 실행 특성을 기준으로 삼는다.

    - 스케줄링은 프로세스 스위칭 메커니즘에 의해 강요된다.

     

    Saving and Restoring Context

    - 프로세스 스위치는 커널이 제어권을 얻었을 때 발생될 수 있다.

    - 프로세스는 시스템 콜이나 예외를 요청한다.

    - 결국, 저장 및 복원 함수는 하드웨어 안에서 수행된다.

     

    프로세스 스위치 동작 방식

    현재 프로세스 P의 내용을 P의 PCB에 저장함(저장과 동시에, PC는 save_context()의 끝을 가르키고, 명령을 return함)

    -> in_progess를 check함(0임) -> in_progress를 1로 설정함 -> 다른 프로세스의 내용을 복원함. (이제부터 다른 프로세스 Q의 시간) -> 결국, 다른 프로세스가 restore_context()를 수행할 때, 프로세스 P로 되돌아옴. -> PCB에서 내용을 로드하여 프로세스 P를 재개함 -> (Recall) PC가 save_context()로부터 return을 가리키고 있었으므로, process_switch()로 돌아감 -> in_progress()를 체크.(1임) -> sys_???이 프로세스 P로 돌아감 -> 더이상 PCB 내용이 필요가 없어짐. -> CPU를 유저 모드로 재설정 -> 스택에서 return address를 pop.

     

    Process Creation(프로세스 생성)

     

    Directed Process Creation

    - 새로운 메모리 공간을 할당함(실행파일과 PCB를 위한 메모리)

    - 새로운 메모리 공간으로 실행파일을 로드함 (메모리 안으로 code와 데이터를 load) , call stack을 생성함

    - PCB를 초기화함(PCB를 생성하고 시작함)

    - 새 프로세스를 시작함 (read-list에 process를 put)

     

    Cloning Process Creation

    Cloning:

    - 자식 프로세스는 부모 프로세스 그대로의 복제품임.

    - fork() 시스템 콜을 호출함.

    - text,data,stack,PCB를 복제함

    - pid와 relation을 수정함

    - read-list에 새로운 PCB를 추가함

     

    Replacing:

    - PID의 변경은 없으나 프로세스의 기계 코드 , 데이터 , heap , stack이 새로운 프로그램으로 대체된다.

     

    Copy on Write (COW)

    - 모든 부모 페이지는 초기에 공유된 상태로 표시된다.

    - 공유된 페이지의 데이터가 변경될 때, 운영체제는 페이지를 복제한다.

    - 따라서 부모 및 자식은 변경된 페이지의 다른 복사본을 가진다. ( 그 외 모든 다른 페이지들은 같은 상태로 남아있음 )

     

    Process Termination(프로세스 종료)

     

    Voluntary termination : exit(status)

    - 메인 루틴에서 복귀한다.

    - exit 함수라고 불린다.

    - 프로세스 종료로 이어진다.

    - 자식으로부터 부모까지 ( wait() 함수를 통해 ) 데이터를 출력한다.

    - 프로세스의 자원들이 운영체제에 의해 할당이 해제된다.

     

    Involuntary termination

    - 다른 프로세스 (parent) 또는 다른 운영체제에 의해 종료된다.

    - kill(pid, signal) or abort() 함수.

    - default action이 종료되는 신호를 수신한다.

     

    Zombie

    - exit() 함수에 의해 프로세스가 종료될 때, 커널이 시스템으로부터 즉시 PCB를 제거하지 않는것.

    - 프로그램이 더이상 실행되지 않아도 PCB는 운영체제 안에 여전히 존재하게 된다.

     

    Reaping

    - 종료 상태가 부모 프로세스로 전달되는 것.

    - 부모 프로세스에 의해 수행된다. ( using wait() )

     

    실행 옵션(Execution options)

    - 부모와 자식은 동시에 실행된다.

    - 부모는 자식이 종료될 때 까지(Reaping) 기다린다.

    - 부모 프로세스는 wait() 시스템 콜을 사용함으로써 자식 프로세스가 종료되는 것을 기다린다.

     

    728x90

    'CS > OS(운영체제)' 카테고리의 다른 글

    인터럽트(Interrupts)  (0) 2022.04.17
    컴퓨터 하드웨어(Computer Hardware)  (0) 2022.04.17
    Process Scheduling  (0) 2022.04.12
    Program & Process  (0) 2022.04.12
    Resource Protection & System Call  (0) 2022.04.11
Designed by Tistory.