프로젝트/운영체제 만들기
-
[xv6] Sleeplock프로젝트/운영체제 만들기 2023. 7. 23. 23:06
글의 참고 - https://github.com/mit-pdos/xv6-public/tree/master 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 : 이 글에서는 `xv6`의 `sleeplock`에 대해 설명하려고 한다. `xv6`에서는 이미 `spinlock`이 존재하는데, `sleeplock`을 추가로 구현한 이유가 뭘까? 파일 시스템 관련 작업들은 디스크에 액세스해야 하기 때문에 시간이 많이 필요하게 된다. 예를 들어, A라는 프로세스가 메모리에 있는 1MB를 디스크에 써야한다고 가정한다. 이럴 경우, 메모리에 있는 내용을 디스크에 쓰는 동안에는 해당 메모리 영역에 다른 WRITE 작업들은 막아야 한다. 즉, A를 제외한 다른 ..
-
[멀티 프로세서] I/O APIC프로젝트/운영체제 만들기 2023. 7. 23. 19:26
글의 참고 - MultiProcessor Specification 1.4 - 64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf [Order Number: 253668-060US] - 82093AA I/O ADVANCED PROGRAMMABLE INTERRUPT CONTROLLER - https://people.freebsd.org/~fsmp/SMP/papers/apicsubsystem.txt 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 : Local APIC의 데이터 시트를 찾아봤지만, `MultiProcessor Specification 1.4`과 `64-ia-32-..
-
[xv6] Application Processor프로젝트/운영체제 만들기 2023. 7. 23. 00:30
글의 참고 - https://github.com/mit-pdos/xv6-public/tree/master - MultiProcessor Specification 1.4 - 64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf [Order Number: 253668-060US] - xv6 - DRAFT as of September 4, 2018 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - Application Processor 코드 분석 : `startothers` 함수는 AP`s가 아닌, BSP에 의해서만 호출되는 함수다. 그거도 딱 한 번만 호출된다. 이 함수는 BS..
-
CMOS프로젝트/운영체제 만들기 2023. 7. 22. 18:18
글의 참고 - https://en.wikipedia.org/wiki/Nonvolatile_BIOS_memory 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 : CMOS는 작은 사이즈의 RAM과 같다. 그래서 시스템이 종료되면 데이터가 모두 사라져 버린다. 그런데, BIOS 및 UEFI 와 같은 시스템 펌웨어에서는 이 CMOS를 사용하고 있다. 그 이유를 보려면, CMOS의 특징을 알아야 될 듯 싶다. Nonvolatile BIOS memory refers to a small memory on PC motherboards that is used to store BIOS settings. It is traditionally called CM..
-
[xv6] Local APIC프로젝트/운영체제 만들기 2023. 7. 21. 02:46
글의 참고 - https://github.com/mit-pdos/xv6-public/tree/master - MultiProcessor Specification 1.4 - 64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf [Order Number: 253668-060US] - xv6 - DRAFT as of September 4, 2018 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - Local APIC 소스 코드 분석 : Local APIC에 대한 내용은 이 글을 참고하자. 일단, 먼저 `xv6`에서 Local APIC를 사용하는 필요한 유틸리티 함수들을 알아보자...
-
[컴퓨터 구조] Local APIC프로젝트/운영체제 만들기 2023. 7. 19. 18:40
글의 참고 - 64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - Local & I/O APIC .... External interrupts are received through pins on the processor or through the local APIC. The primary interrupt pins on Pentium 4, Intel Xeon, P6 family, and Pentium processors are the LINT[1:0] pins, which are connected to the local AP..
-
[멀티프로세서] Multi-Processor Specification(MPS)프로젝트/운영체제 만들기 2023. 7. 18. 21:16
글의 참고 - 64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf [Order Number: 253668-060US] - MultiProcessor Specification 1.4 - https://en.wikipedia.org/wiki/MultiProcessor_Specification 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. - 이 글은 `MultiProcessor Specification 1.4`를 기준으로 한다. 글의 내용 - 멀티 프로세서 : `멀티 프로세서` 스펙은 x86 기반의 다중 프로세서를 효율적으로 처리하기 위해 등장했다. MPS에서는 현재까지도 사용되고 있는..
-
[xv6] Scheduling프로젝트/운영체제 만들기 2023. 7. 17. 21:18
글의 참고 - 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - 타이머 스케줄링 : `xv6`에서 타이머가 호출되면, 직접적으로 프로세스 스케줄링을 하는 것이 아니라, 프로세스들중에서 `SLEEPING`인 프로세스를 `RUNNABE`로 바꾸기만 한다. 실제 스케줄링을 하는 프로시저인 `sched` 프로시저를 호출하지는 않는다. `xv6`에서는 모든 인터럽트 및 트랩은 `trap` 함수에서 관리한다. `trap`에서는 제일 먼저 시스템 콜인지 체크한다. 그리고, 아니라면 인터럽트 및 익셉션인지를 확인한다. 타이머 인터럽트라면, `wakeup` 함수를 호출한다. // trap.c uint ticks; ... ... //PAGEBREAK: 41..