분류 전체보기
-
[xv6] File system카테고리 없음 2023. 7. 16. 20:22
글의 참고 - https://github.com/mit-pdos/xv6-public/tree/master - xv6 - DRAFT as of September 4, 2018 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - File system The purpose of a file system is to organize and store data. File systems typically support sharing of data among users and applications, as well as persistence so that data is still available after a reboot. The xv6 file sys..
-
[xv6] Page tables 상세 분석 2카테고리 없음 2023. 7. 15. 02:42
글의 참고 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 : 앞 글에서 모든 유저 프로세스는 `exec 시스템 콜`을 실행한다는 것을 확인했다. 이 글은 `sys_exec` 부터 분석을 시작한다. `sys_exec`의 인자부터 알아보자. 첫 번째 인자 `argv`는 전체 인자를 포함하고 있다. 근데, 몇 개의 인자를 전달하는지를 전달하지 않고 있다. `xv6`는 인자의 개수는 전달하지 않고, `argv`의 마지막 인자를 `0`으로 나타냄으로써, 마지막 인자를 나타낸다. 그 다음에 `argv` 인자에 포함된 변수들에 주소가 들어간다. // initcode.S #Initial process execs /init. # This code runs..
-
AT & T 문법프로젝트/운영체제 만들기 2023. 7. 15. 02:05
글의 참고 - https://onecellboy.tistory.com/50 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 상수(constant)와 immediate 값 : 모든 상수와 immediate 값에는 $가 붙는다. 예를 들어 숫자 5를 나타내려면 $5라고 한다. 변수의 주소를 나타낼 때에도 앞에 $를 붙인다. 예를 들어 foo란 변수의 주소는 $foo이다. 그냥 foo라고 하면 변수의 값을 나타내게 된다. foo 변수의 주소를 eax 레지스터로 복사하는 것은 : AT&T : movl $foo, %eax Intel : mov eax, foo foo의 값을 eax 레지스터로 복사하는 것은 : AT&T : movl foo, %eax I..
-
xv6 - System Call & Traps프로젝트/운영체제 만들기 2023. 7. 12. 17:07
글의 참고 - book-rev11.pdf - https://github.com/mit-pdos/xv6-public - https://pdos.csail.mit.edu/6.828/2022/xv6.html - https://wiki.osdev.org/Xv6 글의 전제 - 32비트 x86 기반의 xv6 rev-11을 내 나름대로 분석한 내용이다. 글의 내용 - Systems calls, exceptions, and interrupts : `xv6`에서 모든 인터럽트들은 프로세스가 처리한다기 보다는 커널에서 처리한다. 예를 들어, `xv6`에서 스케줄러는 실제 프로세스라기 보다는 커널의 일부분이다. 스케줄러(커널)는 타이머 인터럽트를 받아서 현재 동작중인 프로세스에게서 CPU를 선점해서 다른 프로세스에게 할당한..
-
xv6 - Init process프로젝트/운영체제 만들기 2023. 7. 12. 15:18
글의 참고 - book-rev11.pdf - https://github.com/mit-pdos/xv6-public - https://pdos.csail.mit.edu/6.828/2022/xv6.html - https://wiki.osdev.org/Xv6 글의 전제 - 32비트 x86 기반의 xv6 rev-11을 내 나름대로 분석한 내용이다. 글의 내용 - Abstracting physical resources : 유저 애플리케이션이 하드웨어 직접적으로 접근해서 사용하면 운영체제를 거처셔 접근할 때보다 성능면에서 더 좋은 퍼포먼스를 낼 수 바께 없다. 그리고 성능 및 레이턴시에 대한 예측이 수월해지기 때문에 최적화 또한 상대적으로 쉬워진다. 그래서 실제로 OS가 없는 펌웨어들은 OS가 들어가는 펌웨어보다 ..
-
[xv6] Page tables 상세 분석 1프로젝트/운영체제 만들기 2023. 7. 12. 03:11
글의 참고 - book-rev11.pdf - https://github.com/mit-pdos/xv6-public - https://pdos.csail.mit.edu/6.828/2022/xv6.html - https://wiki.osdev.org/Xv6 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - Paging hardware : 32비트 x86에서 페이지 테이블은 2^20개의 페이지 엔트리와 같다. 하위 12비트는 오프셋으로 변환이 필요없는 실제 물리 주소이다. 그러므로, 32비트 x86에서 변경되는 부분은 상위 20비트가 변경된다. PTE 하나는 4KB를 차지하므로, 이게 2^20개 있으면 4GB가 된다. 그러나, `xv6`는 페이..
-
Shell scriptLinux/development tool 2023. 7. 10. 02:20
글의 참고 - https://hbase.tistory.com/249 - https://velog.io/@alirz-pixel/linux-bashcompletion 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - 쉘 정수 표현 " 쉘 스크립트에서 정수 표현은 특별한 기호를 사용해야 한다. 예를 들어, 변수 2개를 그냥 더하면, 문자열 2개가 더해지는 것과 같은 효과를 준다. 실제 수학적 연산이 되려면 `$(( ))` 안에 들어와 줘야한다. 그냥 더할 경우, 문자열 합치기가 된다. KERN16_PADD=$(($KERN16_SIZE+$SECTOR_SIZE)) ; 512+2 = 514 KERN16_PADD=$KERN16_SIZE+$SECTOR_..
-
TSS프로젝트/운영체제 만들기 2023. 7. 6. 00:26
글의 참고 - 64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - 태스크 매니지먼트 개요 ( 7.1 ) A task is a unit of work that a processor can dispatch, execute, and suspend. It can be used to execute a program, a task or process, an operating-system service utility, an interrupt or exception handler, or a kernel or executive utilit..