본문 바로가기

📂 Engineering83

Paging, MLP4, Linux 페이징 선형적인 가상 주소 -> 실제 물리주소로 번역해주는 메커니즘 페이징 모드에는 3가지가 있다. (1) 32비트 페이징, (2) PAE 페이징, (3) IA-32e 페이징 우리가 살펴볼 건 IA-32e 페이징 (활성화를 위해 CR0.pg, CR4.PAE, IA32_EFER.LME 비트 설정 필요) Paging structures 페이징은 선형 주소 공간을 일정한 사이즈(4096, 4kb in x86_64)로 나누는 건데, 물리 주소 공간이나 외부 저장소에 매핑될 수 있다. x86-64 linux의 모든 structures는 4096의 사이즈와 512개의 entry로 이루어져있다. 리눅스는 계층을 갖는 4 level의 페이지를 사용한다. cr3에 최상단 레벨의 주소가 적혀있다. page table을 만들고 최.. 2022. 6. 1.
kernel_of_linux Terminology Kernel: Unix 메모리에 상주(memory resident)하는 C 프로그램 Utility: command라고도 불리며 디스크에 저장되어 있고 필요할 대 마다 불러옴(loaded on demand) Shell: Unix interface to user, read keyboard input & execute command file: sequence of bytes, I/O나 통신을 위한 소켓들도 모두 파일이다. How Kernel-Shell-Untilities are related 커널 - 쉘 - 사용자 프로그램의 계층구조 시스템콜 유저가 write같은 시스템콜을 요청 int $0x80이 HW 트랩을 발생시킴 HW가 CPU의 모드를 user->kernel로 변경 HW가 trap.. 2022. 5. 30.
PCB(Process Control Block) PCB에 담기는 정보들 Process state -> 프로세스의 상태(new, ready, running, waiting, halted 등) Program counter -> 다음에 이 프로세스를 위해 CPU가 실행시킬 instruction의 주소 CPU registers -> 이 프로세스가 인터럽트나 context_switch 등에 의해 중단되었다가 다시 실행될 때 올바르게 실행되기 위해 필요한 레지스터의 정보들 CPU-scheduling information -> 스케줄링을 위해 필요한 정보들(프로세스 우선순위 등) Memory-management information -> 기본 및 제한 레지스터의 값과 페이지 테이블 또는 세그먼트 테이블과 같은 항목 Accounting information -> 사.. 2022. 5. 30.
쉘이 명령어를 실행시키는 방법 초기 상태: 쉘이 사용자의 입력을 wait하고 있음 사용자가 "ls"를 입력 쉘 프로세스는 fork로 자식 프로세스를 만든다.(아직 CPU는 부모 프로세스에게 있음) 쉘 프로세스는 나머지 명령어를 수행하고 wait를 호출한다.(waiting queue, sleeping queue에 간다) context_switching이 실행되고 자식 프로세스에게 CPU가 주어진다. 자식 프로세스는 exec를 호출해 disk에서 1에서 받은 command line에 해당하는 실행가능파일을 load해 자신의 이미지를 덮어쓴다. (원래는 부모 프로세스와 같은 이미지였으나 새로운 이미지가 덮어써진다.) exec 덕분에 자식은 새로 덮어쓴 이미지의 main함수부터 새출발한다. 자식은 main 루틴을 수행하고, exit을 호출한.. 2022. 5. 30.