프로 세 스 제어 블록 PCB 상세 설명


PCB (process control block), 프로 세 스 제어 블록 은 우리 가 운영 체 제 를 배 운 후에 만난 첫 번 째 데이터 구조 설명 입 니 다. 이것 은 시스템 의 프로 세 스 를 관리 하 는 중요 한 근거 이 고 프로 세 스 관리 와 관련 된 작업 은 PCB 에 들 어가 지 않 아 도 되 는 내용 이 없습니다.일반적으로 PCB 에는 다음 과 같은 내용 이 포함 되 어 있 습 니 다.
(1) 프로 세 스 식별 자 (내부, 외부) (2) 프로세서 의 정보 (유 니 버 설 레지스터, 명령 카운터, PSW, 사용자 의 스 택 포인터).(3) 프로 세 스 스케줄 링 정보 (프로 세 스 상태, 프로 세 스 우선 순위, 프로 세 스 스케줄 링 에 필요 한 다른 정보, 이벤트) (4) 프로 세 스 제어 정보 (프로그램의 데이터 주소, 자원 목록, 프로 세 스 동기 화 및 통신 메커니즘, 링크 포인터)
    데이터 구조 에서 정 의 된 내용 은 뒤의 관리 에 지원 을 제공 하기 때문에 서로 다른 운영 체 제 는 자신의 특징 에 따라 PCB 의 내용 을 조정 했다.다음은 비교적 유행 하 는 일부 운영 체제 의 PCB 구 조 를 정리 하여 참고 하도록 한다.
1. Linux 프로 세 스 블록
    Linux 프로 세 스 제어 블록 은 구조 taskstruct 가 정의 하 는 데이터 구조, taskstruct 저장 / include / linux / sched. h 에는 관리 프로 세 스 에 필요 한 각종 정보 가 포함 되 어 있 습 니 다.Linux 시스템 의 모든 프로 세 스 제어 블록 은 구조 배열 형식 으로 구성 되 어 있 습 니 다.초기 Linux 버 전 은 프로 세 스 를 동시에 실행 할 수 있 는 개수 가 NR 였 습 니 다.TASK (결성 치 512) 규정, NRTASK 는 PCB 결과 배열 의 길이 다.최근 버 전의 PCB 는 링 구 조 를 구성 하고 시스템 에 실제 존재 하 는 프로 세 스 수 는 그 가 정의 하 는 전역 변수 nrtask 동적 기록.구조 배열: struct taskstruct * task [NR TASK] = {& init task} 은 각 PCB 를 가리 키 는 지침 을 기록 합 니 다. 이 지침 배열 은 / kernel / sched. c 에 정의 되 어 있 습 니 다.
    새 프로 세 스 를 만 들 때 시스템 은 메모리 에 빈 task 를 신청 합 니 다.struct 구역, 즉 남 은 PCB 블록 을 입력 하고 필요 한 정 보 를 입력 합 니 다.동시에 이 구 조 를 가리 키 는 지침 을 task [] 배열 에 채 웁 니 다.현재 실행 중인 프로 세 스 의 PCB 용 포인터 그룹 currentset [] 에서 지적 하 다.이것 은 Linux 가 다 프로세서 시스템 을 지원 하기 때문에 시스템 내 에 여러 개의 동시 실행 프로 세 스 가 존재 할 수 있 기 때문에 currentset 는 포인터 배열 로 정의 합 니 다.    Linux 시스템 의 PCB 는 많은 파 라 메 터 를 포함 하고 있 으 며, 각 PCB 는 약 1KB 이상 의 메모리 공간 을 차지한다.PCB 를 나타 내 는 구조 taskstruct 요약 설명 은 다음 과 같 습 니 다: struct taskstruct{ ... unsigned short uid; int pid; int processor; ... volatile long state; long prority; unsighed long rt_prority; long counter; unsigned long flags; unsigned long policy; ... Struct task_struct *next_task, *prev_task; Struct task_struct *next_run,*prev_run; Struct task_struct *p_opptr,*p_pptr,*p_cptr,*pysptr,*p_ptr; ... }; 다음은 일부 데이터 구성원 에 대해 설명 한다. (1) unsigned short pid 는 사용자 표지 (2) int pid 를 프로 세 스 표지 (3) int processor 표지 사용자 가 사용 하고 있 는 CPU 로 대칭 다 프로세서 방식 을 지원 한다.(4) volatile long state 표지 프로 세 스 의 상 태 는 다음 과 같은 여섯 가지 상태 중 하나 입 니 다. 실행 가능 한 상태 (TASK - RUNING);차단 가능 상태 (TASK - UBERRUPTIBLE) 차단 불가 상태 (TASK - UNINTERRUPTIBLE) 경직 상태 (TASK - ZOMBLE) 정지 상태 (TASK STOPPED) 교환 상태 (TASK SWAPPING) (5) long prority 는 프로 세 스 의 우선 순위 (6) unsigned long rtprority 는 실시 간 프로 세 스 의 우선 순 위 를 표시 합 니 다. 일반 프로 세 스 가 잘못 되 었 습 니 다 (7) long counter 는 프로 세 스 동적 우선 순위 카운터 입 니 다. 프로 세 스 회전 스케줄 링 알고리즘 (8) unsigned long policy 는 프로 세 스 스케줄 링 전략 을 표시 합 니 다. 그 값 은 다음 세 가지 상황 중 하나 입 니 다. SCHEDOTHER (값 0) 일반 프로 세 스 우선 순위 회전 법 (round robin) SCHEDFIFO (값 1) 는 실시 간 프로 세 스에 대응 하여 먼저 서비스 알고리즘 을 사용 합 니 다.SCHED_RR (값 2) 대응 하 는 실시 간 프로 세 스 우선 순위 회전 법 (9) struct taskstruct *next_task,*prev_task 는 프로 세 스 PCB 양 방향 링크 의 앞 뒤 지침 (10) struct taskstruct *next_run,*prev_run 은 준 비 된 대기 열 양 방향 링크 의 앞 뒤 지침 (11) struct taskstruct *p_opptr,*p_pptr,*p_cptr,*p_ysptr,*p_ptr 는 프로 세 스 가족 간 의 관 계 를 가리 키 는데 각각 할아버지 프로 세 스, 아버지 프로 세 스, 하위 프로 세 스 와 새로운 프로 세 스 를 가리 키 는 지침 입 니 다.
2. 유 닉 스 프로 세 스 블록 (교과서 10.2 절 상세 소개)
  UNIX   Ⅴ ,            :

프로 세 스 테이블 항목
프로 세 스 식별 자 (PID)
사용자 식별 자 (UID)
프로 세 스 상태
이벤트 설명자
프로 세 스 와 U 영역 이 메모리 나 외부 에 저 장 된 주소
소프트 인 터 럽 트 정보
시간 영역
프로 세 스 크기
편향 값 nice
P - Link 포인터
메모리 영역 에 있 는 U 구역 프로 세 스 본문, 데이터 및 스 택 을 가리 키 는 지침
U 구역 프로 세 스 표 항목 포인터 실제 사용자 식별 자 u - ruid (real user ID) 유효 사용자 식별 자 u - uid (effective user ID)사용자 파일 설명 부표 현재 디 렉 터 리 와 현재 루트 타이머 내부 I / O 매개 변수 제한 필드 오류 필드 반환 값 신호 처리 배열
프로 세 스 영역 표 의 형식 과 크기 영역 상태 영역 이 물리 적 메모리 에 있 는 위치 참조 계수 가 파일 색인 노드 를 가리 키 는 지침 입 니 다.
시스템 영역 표
프로 세 스 영역 표 항목, 시스템 영역 표 항목 과 지역 의 관계
프로 세 스 의 데이터 구조
           

프로 세 스 상태
3. windows 의 PCB
        MS 의 정의 에 따 르 면 Windows 의 프로 세 스 는 간단하게 말 하면 메모리 에 있 는 실행 가능 한 프로그램 으로 프로그램 이 실행 되 는 각종 자원 을 제공 합 니 다. 프로 세 스 는 가상 주소 공간, 실행 가능 코드, 데이터, 대상 핸들 집합, 환경 변수, 기본 우선 순위, 그리고 최대 최소 작업 집합 을 가지 고 있 습 니 다.       Windows 의 스 레 드 는 시스템 프로세서 가 예약 한 기본 단위 입 니 다. 스 레 드 는 프로 세 스 의 임의의 코드 를 실행 할 수 있 습 니 다. 다른 스 레 드 에서 실행 중인 코드 를 포함 합 니 다. 프로 세 스 의 모든 스 레 드 공유 프로 세 스 의 가상 주소 공간 과 시스템 자원 입 니 다. 모든 스 레 드 는 자신의 예외 처리 과정 을 가지 고 있 습 니 다.스 케 쥴 링 우선 순위 및 스 레 드 컨 텍스트 데이터 구조. 스 레 드 컨 텍스트 데이터 구 조 는 레지스터 값, 핵심 스 택, 사용자 스 택 과 스 레 드 환경 블록 을 포함 합 니 다.
        Windows 의 프로 세 스 제어 블록 은 EPROCESS 구조 이 고 스 레 드 제어 블록 은 ETHREAD 구조 입 니 다. EPROCESS / ETHREAD 의 정 의 는 inside windows 2000 에서 비교적 상세 하 게 설명 되 어 있 습 니 다.
        Windows 의 프로 세 스 링크 는 양 방향 링크 입 니 다.이 링 리스트 LISTENTRY 구 조 는 모든 EPROCESS 를 연결 합 니 다. 그러면 하나의 EPROCESS 구 조 를 찾 으 면 우 리 는 전체 링크 를 옮 겨 다 닐 수 있 습 니 다. 이것 이 바로 매 거 진 프로 세 스 의 원리 입 니 다.
건의: 학생 들 이 < > 이 책 을 보 는 것 은 모두 에 게 고급 프로 그래 밍 을 하 는 데 큰 도움 이 됩 니 다.

좋은 웹페이지 즐겨찾기