본문 바로가기

C언어11

WIL3 (1) 핀토스에는 힙이 없음 페이지 디렉토리와 페이지 테이블 페이지로 구성된 2단계 페이징을 가지며 매핑됨 프로세스가 실제로 시작될 때 text와 data는 실제 disk에 있  virtual address 구현은 프로세스가 물리 메모리 주소를 직접 사용하는게 아닌가상 주소 공간을 사용하는 방식으로 전환을 의미 1. Demand Paging 및 Swapping 활성화Demand Paging은 프로그램 전체를 한 번에 메모리에 로드하지 않고 필요한 페이지만 로드Swapping은 메모리가 부족할 때, 사용하지 앟는 페이지를 디스크로 보내고 나중에 다시 부름 구현 방법1. 페이지 폴트 처리 :프로세스가 아직 로드 안된 페이지 접근하면 페이지 폴트이때 커널이 디스크에서 해당 페이지 읽어와 물리 메모리 로드 후 페이지 .. 2024. 10. 10.
WIL 목표 :우선순위가 높은 스레드가 먼저 CPU를 점유할 수 있도록 Priority Scheduling을 구현한다. 스레드들은 각 우선순위에 따라 ready list에 추가현재 실행 중인 스레드의 우선순위보다 높은 우선순위의 스레드가 추가되면,현재 실행 중인 스레드는 바로 CPU 양도스레드는 언제든지 자신의 우선순위를 변경할 수 있다.우선순위를 낮추어 가장 높지 않으면 즉시 양도대기하고 있는 스레드가 여러 개면, 가장 높은 스레드가 깨야 한다새로운 thread의 우선순위가 높으면 선점기존 pintos에서는 ready_list에 새로운 thread가 삽입 되어도 선점xpintos는 ready list에 삽입된 순으로 thread가 CPU 점유  WIL :설명만 듣는것 하고 직접 구현은 차원이 다른 문제였다.한.. 2024. 10. 1.
Understanding Threads 쓰레드 생성, 쓰레드 종료, 쓰레드 간에 스위치를 하는 간단한 스케줄러, 동기화 함수가 구현 되어있음- semaphores, locks, condition variables, and optimization barriers 어떤 함수를 실행하고자 하는 경우, thread_create() 의 인자로 실행하고자 하는 함수를 넣으면 됨.미니 프로그램처럼 thread_create()하면 main()이 실행 되는 것처럼 쓰레드에 전달된 함수가 실행됨. 언제나 하나의 쓰레드만 실행되고 나머진 비활성화. 다음이 없으면 idle()로 실행. 기다려야 할 때 문맥교환 강제 진행.문맥교환 방식은 threads/thread.c 의 thread_launch() 에 정의되어 있다.이는 현재 실행중인 쓰레드의 상태를 저장하고, 스.. 2024. 9. 25.
Synchronization 스레드들 간 자원 공유하는것은 주의를 요함.pintos는 이를 위한 다양한 synchronization 함수들을 제공함 Disabling Interrupts 인터럽트 비활성화synchroniztation을 하는 가장 단순한 방법은인터럽트(CPU의 실행을 잠시 멈추고, 특정 작업을 처리한 후 실행하던 작업으로 복귀)를 불가능하게 하는 것.인터럽트가 꺼지면, 다른 스레드는 진행중인 스레드를 선점 불가.스레드 선점은(preempt)은 timer interrupt에 의해 이뤄지기 때문.  암튼, pintos는 '선점가능한(preemptible) 커널' 임.선점 가능한 커널은 더 명시적인 동기화가 필요함 인터럽트를 비활성화 시키는 주된 이유는 외부의 인터럽트 핸들러와 커널 스레드를 동기화 시키기 위해서임. 몇가지.. 2024. 9. 25.
개요 Pintos란?x86-64 아키텍쳐에서 동작하는 간단한 OS 프레임워크kernel - threadsloading and running user programsfile system위 3개를 강화할 예정 가상 메모리구현 소스트리 둘러보기threads/ : 프젝1에서 수정을 시작할 base kernel 소스 코드userprog/ : 프젝2 에서 수정을 시작할 user program loader의 소스코드vm/ : 프젝3 에서 가상 메모리 구현filesys/ : 기본적인 file system의 소스코드. 프젝2 부터 씀devices/ : (키보드, 타이머, 디스크 등) I/O 장치 interfacing을 위한 소스코드. (프젝1 에서 타이머 수정)lib/ : (라이브러리, Pintos커널과 (프젝2)user p.. 2024. 9. 25.
Proxy 서버 웹 프록시는 웹 브라우저와 최정 서버 사이에서 중개 역할을 하는 프로그램.브라우저는 프록시에 연락하고 프록시는 요청을 최종 서버로 전달.최종 서버가 프록시에 응답하면, 프록시는 응답을 브라우저로 전송 사용처방화벽 뒤의 브루어저가 프록시를 통해서만 방화벽 너머의 서버와 접속할 수 있도록 함모든 식별 정보를 제거하여 익명화 도구로 작용할 수 있다웹 객체를 캐시하여 서버로부터의 객체의 로컬 복사본을 저장하고, 이후에 캐시에서 읽어 응답 간단한 HTTP 프록시 구현1. 프록시를 설정하여 들어오는 연결을 수락,    요청을 읽고 파싱,    웹 서버로 요청을 전달    서버의 응답을 읽어 해당 클라이언트로 응답을 전달2. 여러 동시 연결을 처리하도록 업그레이드 ( 동시성 처리 )3. 최근에 접근한 컨텐츠의 간단한.. 2024. 9. 20.