2019-2020-1 20199302 작업의 일곱 번째 주에 "리눅스 커널 원리 및 분석"

여섯 번째 장 생성 및 처리하는 과정을 설명

설명 (a) 공정

하나의 OS 관리 세 가지 기능 : (1) 관리 프로세스 (과정) (2) 메모리 관리 (가상 메모리) (3) 파일 시스템 (파일)
2에 설명 된 프로세스 : 프로세스 제어 블록 PCB
3, 리눅스 커널 상기 프로세스를 기술 된 task_struct 구조체 프로세스 상태되는 상태 변수에, 스택은 스택이다. 구조적 관계 : 프로세스의 상태 양방향 연결 목록 관리의 프로세스 기술 콘솔 TTY, 파일 시스템 FS 프로세스 파일 기술자 : 구분 신호 및 파일 사이의 다른 신호들, 메모리 관리 기술 mm, 통신 방법.
4 과정과 원칙적으로, 리눅스 커널 준비 상태 및 실행 상태가되었는지 시스템 프로세스 상태 리눅스 운영의 상태 사이의 주요 차이점
상태를 차단하는 과정에서 두 가지로 나누어, TASK_RUNNING라고하고, 하나는 수, TASK_INTERUPTIBLE입니다 신호 및 wake_up ()는 다른 경우에만 wake_up 수 () 인 웨이크 TASK_UNINTERUPTIBLE 일어나.

5 식별자 프로세스의 PID : PID와 함께 tgid 프로세스를 식별하는 프로세스 기술자.
프로세스 데이터 구조를 관리하기위한 6, 이중 연결리스트 구조체 list_head 작업.

만들기 (b)의 과정

도 1을 참조하면, 먼저 프로세스 (프로세스 번호 0) 다른 프로세스가 부모 프로세스을 do_fork 초기화 복사에 의해 초기화되는 동안, 하드 코드 고정 방식에 의해 초기화되는 구조 변수를 설명하는 처리이다 init_task.
제 2 메모리 관리 코드를 관련.
mm 및 데이터 세그먼트, 코드 세그먼트, 스택 세그먼트의 복수를 포함 active_mm 및 프로세스 주소 공간과 관련된 메모리 관리 데이터 구조 포인터이다.
3, 아버지와 아들, 형제 관계 사이의 프로세스를
부모 프로세스에 기록 된 구조체의 task_struct 자료 구조는 현재 프로세스, 부모, 이중 구조체 list_head 어린이의 목록을 연결되어 현재 프로세스를 기록 자식 프로세스를 real_parent, 형제는 현재 프로세스가 이중 구조체의 목록을 연결되어 기록 list_head 형제. 아버지와 아들 사이에 복잡한 사슬 관계는 포인터 또는 양방향 연결리스트를 통해 연결됩니다.
도 4는 데이터 구조 CPU 관련된 상태 정보를 저장 프로세스 콘텍스트의 일부
의 구조체 데이터 구조는 CPU와 관련된 프로세스의 맥락에서 어떤 상태 정보를 저장 thread_struct. 가장 중요한 x86-32 비트 시스템에서, SP는 ESP 레지스터는 프로세스 컨텍스트의 상태를 저장하는 데 사용됩니다, SP와 IP를,의 IP EIP 시스템은 프로세스 컨텍스트의 상태를 저장하기 위해 등록합니다.
5, 생성 및 분석 프로세스의 프로세스
프로세스 작성은 아마 프로세스 기술자 및 기타 관련 자료는 과정을 복사 전류, 자식 프로세스, 일부 내용을 변경하는 프로세스 기술자를 복제하는 데 필요한 자식 프로세스를 생성하고 생성 (운영 체제 준비 큐에 해당) 실행 큐에 좋은 자식 프로세스.

(C) 공정 생성 과정 분석


이 MenuOS에 각각 브레이크 포인트를 추가 sys_clone을 do_fork dup_task_struct copy_process``copy_thread 상기


시스템 호출 함수는 다음 do_fork 주차 계속 sys_clone임을 나타내는 명령 줄 sys_clone 주차 발견 입력 포크

추천

출처www.cnblogs.com/eosmomo/p/11784233.html