🔐
땡칠로그/🔐시스템 보안 정리 - 프로세스 구조

시스템 보안 정리 - 프로세스 구조

태그
CS
수업
정리
완료 일시
Apr 12, 2024

섹션 & 세그먼트

프로그램의 영역 구분 - 섹션 → 잘게 쪼개져있음
프로세스의 영역 구분 - 세그먼트 → 4개(큰 단위)
프로그램의 영역 구분 - 섹션 → 잘게 쪼개져있음 프로세스의 영역 구분 - 세그먼트 → 4개(큰 단위)

프로세스 디스크립터

프로세스에 대한 정보

컨텍스트 스위칭

리눅스는 프로세스 단위가 아니라 Task(Thread) 단위로 관리한다.
💡
그렇다면 프로세스 테이블 관점에서 fork()와 쓰레드 생성은 같은가?
task_struct가 할당된다는 점, 독립적인 스케쥴링의 대상이 된다는 점에서는 같다.

프로세스 디스크립터

Task on Linux kernel
Task on Linux kernel
Proc on XV6 kernel
Proc on XV6 kernel
리눅스 커널이 프로세스를 관리하기 위한 구조체이다.
PID, CPU 레지스터 정보(thread — context on XV6 kernel), 프로세스 상태 등이 저장된다.

컨텍스트

Linux Kernel Context
Linux Kernel Context
XV6 Kernel Context
XV6 Kernel Context
프로세스 실행 상태를 말한다.
프로세스의 실행 주체는 CPU이며, CPU는 실행 상태를 레지스터에 담기 때문에,
결과적으로 컨텍스트란 레지스터들의 상태이다.
이걸 메모리에 저장함으로써 프로세스(혹은 작업) 간 전환이 가능하다. (멀티 프로세싱)

컨텍스트 스위칭

CR3

Page Directory Base Pointer, PA가 지정됨
컨텍스트 스위칭 시 해당 Task에 맞는 페이지 디렉터리를 지정해줌
xv6 User Virtual Memory 스위칭 코드
xv6 User Virtual Memory 스위칭 코드