ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스 Subsystem
    Note/운영체제 2020. 11. 27. 16:36

    가 . 프로세스 Structure

    U 영역 : 사용자 프로세스가 수행할 때 필요로 하는 정보를 저장 하는 공간이다. 이 영역의 정보는 Secoddory Storage (hdd) 등에 저장돼있다. 정보의 양이 매우 크며 디스크와 메모리를 왔다갔다 한다. 프로세스가 현재 오픈한 파일의 정보, 프로세스가 생성한 자식 프로세스의 정보등 이 저장된다.

     

    Proc Table : U영역과는 다르게 Swapable 하지 않은 정보이다 프로세스가 생성되어 항상 필요로 하는 정보가 저장되는 공간이다. 크기가 작으며 운영체제가 즉시 access할 필요가 있는 정보들이다. 구동상태가 아닌 수면상태나, 대기 상태에도 필요하다. 프로세스의 현재 상태, 프로세스의 우선 순위, 스케줄링을 위해 대기한 시간등이 저장된다.

     

    프로세스 리전 테이블 : 프로세스가 실행되면 text, data, stack등의 정보가 저장되는데 이 데이터에 대한 가상메모리주소를 갖는 테이블이다. 이 가상메모리 주소는 커널 리전 테이블에 대응 된다.

     

    커널 리전 테이블 : text, data, stack등의 정보가 저장되어 있는 실제 Physical 영역의 주소를 갖는다.

     

     

     

     

    . Process와 관련된 fork, exec등의 system call data structure

    Fork : Fork 시스템콜은 프로세스의 모든 내용을 복사하는 것이 아닌 자료구조를 만들어 주는 것이다. 즉 자식 프로세스의 이름과, id등의 기본적인 내용, 구조만 생성해주는 것이다.

    Fork를 위해서는 dupreg, attachreg의 시스템콜이 사용되는데, dupreg는 자료구조를 복사 하는 것이다. Attachreg는 복사된 구조를 프로세스당 영역테이블에 페이지 테이블 주소 값을 링킹해준다. 다시 말해서 Region이 가리키고 있는 페이지 테이블을 linking하는 것이다.

     

    Input : none

    Output : pid number

     

    알고리즘은 다음과 같다.

    1) 커널 자원이 사용가능한지 확인한다.

    2) PID free proc table slot get한다.

    3) 너무 많은 프로세스가 구동 중이진 않은지 확인한다.

    4) child의 상태를 “being created”로 마킹한다.

    5) Parent proc table slot child slot에 카피한다. 

    6) 성공적으로 진행되었으면 counts를 증가하고 open file counts를 증가한다.

    7) forking이 마무리 되었으면 메모리에 parent context를 카피한다.

    8) 그 이후 dummy layer child system level context에 추가한다.

     

    Exec : exec시스템콜은 생성된 자식프로세스에게 부모 프로세스의 내용을 복사해주는 시스템콜이다.

    Exec를 수행하기 위해서는 detachreg allocreg의 시스템콜이 사용된다. Detachreg은 기존 region에 대한 link를 끊는 것이고, allocreg region의 자료구조를 할당하는 것이다.

     

    Input : file name, parameter list, environment variable list

     

    알고리즘은 다음과 같다.

    1) 먼저 inod의 정보를 가져온다.

    2) 수행가능한지, 수행할 권한이 있는지 체크한다.

    3) 파일 헤더를 읽고, load 가능한지 체크한다.

    4) old address space에서 시스템 스페이스로 파라미터를 복사한다.

    5) child old regions는 모두 detach한다.

    6) new region을 할당한다.

    7) region attach한다.

    8)끝으로 메모리에서 load하며 복사를 마무리한다.

    'Note > 운영체제' 카테고리의 다른 글

    동기화 이슈  (0) 2020.11.27
    리얼타임 스케줄링  (0) 2020.11.27
    파일 시스템  (0) 2020.11.27
    C 메모리 레이아웃  (0) 2020.11.27
    Boot up : 디바이스의 첫 동작  (0) 2020.11.27
Designed by Tistory.