본문 바로가기

computer security/RISC-V

Chapter 8. File system 파일 시스템은 데이터를 조직적으로 저장하고 관리하며, 재부팅 후에도 데이터를 유지(Persistence)할 수 있도록 설계되었다.xv6 파일 시스템은 Unix와 유사한 파일, 디렉토리, 경로명을 지원하며, 데이터를 virtio 디스크에 저장하여 영속성을 제공한다. 파일 시스템의 주요 도전 과제1. on-disk data structures : - 디렉토리와 파일의 트리를 표현- 파일 내용이 저장된 블록을 기록- 디스크에서 사용 가능한 블록을 추적2. crash recovery : 전원 차단과 같은 충돌 상황에서도 파일 시스템이 일관성을 유지하고, 충돌로 인해 데이터 구조가 손상될 위험을 방지한다.3. 동시성 : 여러 프로세스가 동시에 파일 시스템을 사용할 수 있도록 동기화한다.4. 디스크 접근 속도 문제.. 더보기
chapter 7. Scheduling xv6는 다중 프로세스를 지원하기 위해 멀티플렉싱 기법을 사용하며, 한정된 CPU 자원을 여러 프로세스 간에 효과적으로 공유하도록 설계되었다. Multiplexing운영체제는 한정된 CPU를 여러 프로세스가 공유하도록 하기 위해 다음 두 가지 상황에서 CPU를 스위칭한다.1) 프로세스가 I/O작업, 자식 프로세스 종료, 또는 sleep 호출로 대기 중일 때, CPU를 다른 프로세스에 양보2) 프로세스가 오랫동안 CPU를 독점할 때 : 타이머 인터럽트를 통해 강제로 스위칭이를 통해 xv6는 각 프로세스가 자신만의 CPU를 사용하는 것처럼 보이는 환상을 제공한다. 하지만 멀티플렉싱을 구현하려면 몇 가지 과제를 해결해야 한다:- context switching : 한 프로세스에서 다른 프로세스로 스위칭하는 메.. 더보기
Chapter 6. Locking 1. xv6에서 동시성이 발생하는 이유Concurrency란 여러 명령어 흐름(instruction stream)이 교차(interleaved)하여 실행되는 상황을 의미한다.xv6에서는 다음과 같은 세 가지 주요 경우에 동시성이 발생할 수 있다.1) 멀티프로세서 병렬 처리xv6는 여러 CPU가 독립적으로 실행되면서 RAM을 사용하는 환경에서 동작할 수 있다.여러 CPU가 동시에 공유 데이터 주고(ex. free memory list)를 읽거나 수정하려고 하면, 하나의 CPU가 동일한 데이터를 읽거나 수정하게 되어 데이터 불일치나 손상이 발생할 수 있다.2) 단일 프로세서에서의 스레드 전환단일 CPU 시스템에서도 xv6는 스레드 간 전환을 통해 여러 작업을 수행한다.CPU가 작업을 전환할 때 서로 다른 스.. 더보기
Chapter 5. Interrupts and device drivers 장치 드라이버는 특정 하드웨어 장치를 관리하는 운영체제의 코드이다.장치를 설정하고, I/O 작업을 시작하며, 작업 완료 시 발생하는 인터럽트를 처리하고, 장치의 I/O를 기다리는 프로세스와 상호작용한다.드라이버는 하드웨어와 병렬적으로 실행되기 때문에 동기화가 중요하다.장치에서 인터럽트가 발생하면, 커널은 드라이버의 interrupt handler를 호출한다.대부분의 드라이버는 두 가지 context에서 실행된다:1) Top half : 시스템 호출(read, write 등)을 통해 실행되며, 장치에 I/O 작업을 요청한다.2) Bottom half : 장치에서 작업이 완료되어 interrupt가 발생했을 때 실행되며, 대기 중인 프로세스를 깨우고 다음 작업을 준비한다.  Code : Console inp.. 더보기
Chapter 4. Traps and system calls Trap은 프로그램 실행 중 발생하는 특정 이벤트로 인해 CPU가 정상적인 명려어 실행을 멈추고, 해당 이벤트를 처리하기 위한 특수한 코드를 실행하도록 강제되는 상황을 의미한다. 이 장에서는 세 가지 종류의 trap에 대해 설명한다. 1. Trap이란?1) 시스템 콜(system call)유저 프로그램이 커널에 도움을 요청할 때 발생한다.유저 프로그램은 ecall 명령어를 실행하여 커널에 진입하고, 커널은 요청을 처리한 후 유저 프로그램으로 돌아온다.2) 예외(exception) 프로그램이 잘못된 동작을 수행할 때 발생한다.ex. 0으로 나누기, 잘못된 가상 주소 접근 등이 예외 사오항에 해당한다.3) 장치 인터럽트(device interrupt)외부 장치가 CPU에게 특정 작업이 완료되었음을 알리기 위.. 더보기
Chapter 3. Page tables Paging hardware1. virtual address and physical address- virtual address : 프로그램이 사용하는 주소로, CPU가 직접 접근하지 않고 페이지 테이블을 통해 물리 주소로 변환된다.- Physical address : 실제 RAM에 대한 주소로, DRAM 데이터를 읽고 쓰는데 사용된다.RISC-V CPU는 항상 가상 주소를 사용하며, Sc39(39비트 가상 주소 모드)를 통해 물리 주소로 변환한다. 2. Sv39 : 39비트 가상 주소Sv39는 64비트 주소 중 하위 39비트만 사용하고, 상위 25비트는 무시한다.Sv39에서 가상 주소는 다음과 같이 나뉜다.- 상위 27비트 : 페이지 테이블을 인덱싱하는 데 사용- 하위 12비트 : 페이지 내 오프셋주소.. 더보기
chapter 2. Operating system organization Abstracting physical resources운영체제의 기본적인 역할은 하드웨어 자원을 추상화하여 관리하는 것이다.운영체제를 사용하지 않고, 시스템 호출을 단순한 라이브러리 형태로 구현하여 애플리케이션이 하드웨어와 상호작용하게 할 수도 있다.하지만 여러 애플리케이션이 동시에 실행될 때, 애플리케이션들이 서로를 신뢰하고, 잘못된 동작을 하지 않는다는 전제가 필요하다.예를 들어, 한 애플리케이션이 주기적으로 CPU를 다른 애플리케이션에게 넘겨줘야 한다. 하지만 실제로는 애플리케이션 간에 신뢰가 부족하고, 버그도 많기 때문에 cooperative time-sharing은 현실적으로 어렵다. 운영체제는 애플리케이션 간의 격리를 강하게 보장하기 위해 하드웨어 자원에 대한 직접적인 접근을 금지하고, 자원을.. 더보기
chapter 1. operating system interfaces operating system : 하드웨어와 사용자 간의 인터페이스를 제공하고, 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어- 자원관리(resource management) : CPU, 메모리, 저장장치 등 시스템 자원 관리- 사용자 인터페이스 제공 : CLI(Command Line Interface), GUI(Graphical User Interface)- 프로세스 관리(process management) : 프로세스의 생성, 실행, 중지, 종료 등 관리, CPU 스케줄링을 통해 프로세스들 동시에 실행- 메모리 관리, 파일 시스템 관리, 입출력장치 관리, 보안 및 접근 제어 Process and memory1. 프로세스와 메모리xv6의 프로세스는 user space memory(instruct.. 더보기