xv6-book (15) 썸네일형 리스트형 xv6-book (Ch2.6-Real world) 현실에서 모놀리식 커널과 마이크로커널 둘 다 찾을 수 있습니다.많은 Unix 커널은 모놀리식입니다. 예를 들어, 리눅스는 모놀리식 커널을 갖고 있지만 일부 OS 기능은 사용자 수준 서버로 실행됩니다. L4, Minix, QNX와 같은 커널은 서버를 갖춘 마이크로커널로 구성되어 있으며 임베디드 환경에서 널리 사용됩니다. 대부분의 운영체제는 프로세스 개념을 채택했으며, 대부분의 프로세스는 xv6와 유사합니다.그러나 현대의 운영 체제는 하나의 프로세스가 여러 CPU를 활용할 수 있도록 여러 스레드를 지원합니다.하나의 프로세스에서 여러 스레드를 지원하는 것은 xv6가 갖추기 않은 많은 기능을 필요로 합니다. xv6-book (Ch2.6-Code: starting xv6 and first process) xv6 시작 및 첫 번째 프로세스RISC-V 컴퓨터가 전원을 켜면, 자체를 초기화하고 읽기 전용 메모리에 저장된 부트 로더를 실행합니다. 부트 로더는 xv6 커널을 메모리로 로드하고 기계 모드에서 CPU는 _entry에서 시작하는 xv6를 실행합니다.RISC-V는 페이지 하드웨어가 비활성화되어 시작하며, 가상 주소는 직접 물리 주소에 매핑됩니다. 로더는 xv6 커널을 메모리에 물리적 주소 0x80000000에 로드합니다. (I/O 장치가 포함되어 있는 주소)_entry에서의 명령은 xv6가 C코드를 실행할 수 있도록 스택을 설정합니다. xv6는 start.c 파일에 초기 스택인 stack 0에 대한 공간을 선언합니다. _entry의 코드는 RISC-V에서 스택이 아래로 성장하기 때문에 최상위인 stack.. xv6-book (Ch2.5-Process overview) 프로세스 개요xv6에서 격리의 단위는 프로세스입니다.프로세스 추상화는 한 프로세스가 다른 프로세스의 메모리, CPU, 파일 디스크립터 등을 파괴하거나 감시하지 못하도록 합니다. 또한, 프로세스가 커널 자체를 파괴하는 것을 방지하여 프로세스가 커널의 격리 메커니즘을 교란할 수 없도록 합니다. 커널이 프로세스를 구현하는 데 사용하는 메커니즘에는 사용자/커널 모드 플래그, 주소 공간, 스레드의 시간 조각화 등이 있습니다. 프로세스 추상화는 프로그램에게 개인용 컴퓨터를 가지고 있는 것처럼 보이도록 도와 격리를 강화합니다.프로세스는 다른 프로세스가 읽거나 쓸 수 없는 것으로 보이는 개인 메모리 시스템 또는 주소 공간을 프로그램에 제공합니다. 또한, 프로세스는 프로그램의 명령을 실행하는 데 자체 CPU를 제공하는 .. xv6-book (Ch2.4-xv6 organization) xv6-riscv (folder structure of xv6) (tistory.com) xv6 커널 소스는 kernel/ 하위 디렉토리에 있습니다. 이 소스는 대략적인 모듈성 개념을 따라 파일로 분할되어 있습니다.모듈 간의 인터페이스는 defs.h (kernel/defs.h)에 정의되어 있습니다. xv6-book (Ch2.3-Kernel organization) 커널 구조핵심 설계 고려사항 중 하나는 운영체제의 어떤 부분이 커널 모드에서 실행되어야 하는지입니다.전체 운영체제가 커널에 위치하여 모든 시스템 호출의 구현이 커널모드에서 실행되는 것을 모놀리식 커널이라고 합니다. 이러한 구성에서 전체 운영체제는 완전한 하드웨어 권한을 갖고 실행됩니다.이는 운영체제 설계자가 운영체제의 어떤 부분이 완전한 하드웨어 권한이 필요하지 않은지를 경정할 필요가 없어 편리합니다. 모놀리식 구조의 단점은 운영체제의 다른 부분 간 인터페이스가 복잡하다는 것입니다. 모놀리식 커널에서 실수는 치명적인 결과를 초래할 수 있습니다. 커널이 실패하면 컴퓨터가 작동을 멈추고, 모든 응용 프로그램도 실패합니다. 커널에서의 실수를 줄이기 위해, 운영체제 설계자는 커널 모드에서 실행되는 운영체제 코.. xv6-book (Ch2.2-User mode, supervisor mode, and system calls) 사용자모드, 커널모드, 시스템 호출강력한 격리를 달성하려면 응용 프로그램과 운영체제 간에 엄격한 경계가 필요합니다.응용 프로그램이 실수한 경우 다른 응용 프로그램이나 운영체제에서 실패하면 안됩니다. 운영체제는 실패한 응용 프로그램을 정리하고 다른 프로그램을 계속 실행할 수 있어야 합니다.강력한 격리를 달성하기 위해서 응용 프로그램이 운영체제의 데이터 구조와 명령을 수정하거나 다른 프로세스의 메모리에 접근하지 못하도록 해야 합니다. CPU는 강력한 하드웨어 지원을 제공합니다.RISC-V는 CPU가 명령을 실행할 수 있는 3가지 모드를 지원합니다. (사용자모드, 커널모드, 머신모드)XV6는 머신모드에서 몇 줄의 명령어를 실행한 후 커널 모드로 변경됩니다.더보기machine mode (머신 모드)머신모드는 .. xv6-book (Ch2.1-Abstracting physical resources) 물리적 리소스 추상화 운영 체제를 만나게 되면 가장 먼저 떠오르는 질문 중 하나는 "왜 운영 체제가 필요한가?"에 대해 생각할 수 있습니다. 이유 중 하나는 시스템 호출을 라이브러리로 구현하여 응용 프로그램이 링크될 수 있다는 점이 있습니다. 이 계획에서 각 응용 프로그램은 필요에 맞게 조정된 자체 라이브러리를 가질 수도 있습니다. 응용 프로그램은 하드웨어 리소스와 직접 상호 작용하고 해당 리소스를 응용 프로그램에 가장 적합한 방식으로 사용할 수 있습니다. 일부 임베디드 장치나 실시간 시스템용 운영 체제는 이러한 방식으로 구성됩니다. 이 라이브러리 접근 방식의 단점은 여러 애플리케이션이 실행 중인 경우, 애플리케이션들이 잘 행동해야 한다는 점입니다. 예를 들어, 각 애플리케이션은 주기적으로 CPU를 양보.. xv6-book (Ch2-Operating system organization) 운영 체제 구성 운영 체제의 주요 요구 사항 중 하나는 동시에 여러 활동을 지원하는 것입니다. 예를 들어, 1 장에서 설명한 시스템 호출 인터페이스를 사용하는 프로세스는 fork를 사용하여 새로운 프로세스를 시작할 수 있습니다. 운영 체제는 이러한 프로세스들 사이에서 컴퓨터의 자원을 시간을 나눠 사용해야 합니다. 예를 들어, 하드웨어 CPU보다 더 많은 프로세스가 있는 경우에도, 운영 체제는 모든 프로세스가 실행할 기회를 확보해야 합니다. 또한, 운영 체제는 프로세스 간의 격리를 제공해야 합니다. 즉, 한 프로세스에 버그가 있고 오동작하는 경우에도 이에 영향을 받지 않는 프로세스가 있어야 합니다. 그러나 완전한 격리는 지나치게 강력하기 때문에 프로세스가 의도적으로 상호 작용할 수 있어야 합니다. 이러한 .. 이전 1 2 다음