Publicidad
Publicidad

Más contenido relacionado

Publicidad
Publicidad

백업을 위한 USB운영체제 완료세미나

  1. Operating System on USB to backup data Load of Matrix 17th An Jin Wang (PL) 17th Sin Dong In 17th Jang Jin Woo
  2. 2/66 Contents • 프로젝트 소개 • 역할 분담 • 시스템 구성도 • 부트섹터 • Memory 관리 • Driver • Task Switching • File Manager • File System • Shell • 힘들었던점과 노하우…
  3. 3/66 Project introduction • 프로젝트 목적 – 부팅이 불가능한 PC에 자료를 백업 찾아 백업 할 때 사 용할 수 있는 작은 운영체제 • 개발기간 - 2007. 04 ~ 2007. 7(4개월) • 개발환경 – Visual Studio 2003 ,NASM 0.98.39, MASM, TASM 5.0, VMWare Workstation 5.5.3 – X86 Assembly, C
  4. 4/66 역 할 분 담 • 안진왕 (PL) – 부트 섹터 및 부트 섹터 Writing 프로그램 – NTFS 파일 시스템 구현, 메모리 관리 – 프로젝트 일정 관리 • 신동인 – FAT32 파일 시스템 구현 – Command Shell – HDD Driver 구현 • 장진우 – Interrupt Routine (Hard Disk, Keyboard, Etc), – Task Switching Implementation, – Driver(USB, Keyboard)
  5. 5/66 System Architecture(1) USB 부팅이 가능한 PC Kernel Consol O S File System Task Switching Memory Manager Device Driver Interrupt Booting Program
  6. 6/66 System Architecture(2) 스케쥴러 Device Driver 하드웨어 Task 메모리관리 File System Task 교체
  7. 7/66 Memory Map Size Address contents 1536 byte 000000h ~ 0005FFh Interrupt vector, BIOS communication, reserved 80 kbyte 010000h ~ 023FFFh OS kernel 7 kbyte 080000h ~ 081BFFh USB read, write code 1 kbyte 081C00h ~ 081FFFh USB reserved 120 kbyte 082000h ~ 09FFFFh USB buffer 960 kbyte 100000h ~ 1EFFFFh Application programe 64 kbyte 1F0000h ~ 1FFFFFh Application stack 2 Mbyte ~ 200000h ~ FFFFFFFFh Memory pool
  8. 8/66 부트 섹터 루틴 레지스터 세팅 Disk 파라미터 설정 MBR Partition 정보 Read Hidden Sector와 비교 및 Disk Type 설정 나머지 부팅프로그램 로딩 커널 파일 검색 커널 파일 로딩 로딩 된 곳으로 점프
  9. 9/66 BIOS - INT 13 • 바이오스에서 하드디스크(USB포함)를 읽을때 사용하는 인터럽트임. • INT 1E에 의해 디스크 파라미터의 설정 값을 참조 • 잘못된 디스크 파라미터 설정은 잘못된 섹터를 읽어 올 수 있음. • INT13은 CHS(AH=02H), LBA(AH=42H) 이렇게 2개의 모 드가 있음.
  10. 10/66 디스크 파라미터 설정(INT 1E) • 디스크 파라미터를 바이오스에 설정해 주는 것. • 인터럽트 명령어라기 보다는 0050H:0022H에 11개의 바 이트를 직접 메모리에 써야함. • 메모리 주소 78H에 522H값을 쓰고 7AH에 0000을 쓴다. (메모리 복사 전에 이 주소에 값을 넣어 줘야함) • 0x07BE부터 시작해서 11BYTE를 위의 주소에 복사 • 바이오스가 디스크 정보를 입력 시켜둔 메모리 주소임.
  11. 11/66 INT 15/AH=2401H • A20을 Protected Mode에서 in/out명령으로 켜지 못하는 경우가 발생할 부트섹터에서 A20을 미리 켜 줄때 사용. • 성공했을시 – CF = 0 – AH = 00h • 실패 했을시 – CF = 1 – AH = status – 01h keyboard controller is in secure mode – 86h function not supported
  12. 12/66 부트섹터 만들때 주의할 점 • 바이오스에 따라 영향을 받을 수도 있음. • 특히 INT 1E설정을 잘못 했을시 PC에 따라서 영향을 받음. • USB는 HDD로 인식 하므로 INT13에서 DL 레지스터 값(읽어 들일 장 치 드라이버)을 80H로 함. • 간혹 노트북에서 INT13으로 USB를 읽을때 DL이 0H로 해서 읽혀지 는 경우가 있는데, 그때 첫번째 섹터는 PBR임. • INT13을 CHS든 LBA든 사용할때 가장 중요한 것은 메모리에 로딩이 될 주소를 잘 확인하는 것! • 1개의 섹터씩 읽는 것이 좋음. 즉 1개의 클러스터가 8개의 섹터인 경 우 8번 반복문을 이용해서 읽는 것이 메모리 주소 관리에 좋음.
  13. 13/66 부트섹터 Writing 프로그램(1)
  14. 14/66 부트섹터 Writing 프로그램(2) • 주의사항 – 절대로 프로그램 오작동에 의해 하드디스크의 부트섹터에 잘못된 데이터가 가는 일이 없도록 철저히 예외처리 할 것! • 특히, CreateFile함수에 들어가는 첫번째 인자를 잘 확인할것! – USB 메모리 스틱을 포멧하고 난 직후부터 컴퓨터에서 분리 될 때 까지 USB의 부트섹터에 어떤 데이터를 쓰더라도 결국 포맷된 직 후의 데이터 값으로 Reload됨. • 화면에 장치를 제거하겠다는 메시지를 출력한 후 CM_Request_Device_EjectW()사용해서 USB를 소프트웨어 상으로 제거시켰음.
  15. 15/66 메모리 관리(1) • 메모리 초기화 – 메모리 크기를 메모리 래핑을 이용해서 알아냄. – 메모리를 블록 단위로 관리함. – 필요한 메모리 크기가 블록 크기 보다 작아도 무조건 1 개의 블록을 차지한다. – 메모리 블록 한 개는 1개의 메모리 디스크립터와 1:1로 매칭되어 있음. – 메모리 블록 총 개수 = 메모리 디스크립터를 담은 블록 + 할당 가능한 메모리 블록
  16. 16/66 메모리 관리(2) • 메모리 할당 – 메모리 디스크립터 처음 부터 탐색 하기 시작 해서 메모리 블록 중 할당 되지 않는 최초 블록 을 찾음. – 요청받은 메모리 블록 개수 만큼 연속적으로 비어있는지 검사. – 연속적으로 비어 있으면 메모리 디스크립터의 Flag를 1(할당됨)로 지정
  17. 17/66 메모리 관리(3) • 메모리 해제 – 메모리 주소를 보고 몇 번째 블록이 할당되었 는지 계산 – 그 주소 값을 가지고 있는 메모리 디스크립터 를 순차적으로 검색 – 찾은 메모리 블록에 대한 디스크립터 상태를 0(미할당)으로 변경 및 해당 블록을 클리어 한 다.
  18. 18/66 메모리 관리(4) Memory Descriptor Memory Descriptor Memory Descriptor Memory Descriptor Memory Block Memory Block Memory Block Memory Block ……….
  19. 19/66 GDT • GDT 란? – “커널이 메모리를 어떻게 사용하겠다” 라고 하는 설계서. 구분 이름 설명 Kernel Code 메모리 전영역, 커널이 사용하는 영역 Data 메모리 전영역, 커널이 사용하는 영역 Real Code 0x80000 64kbyte, Real mode가 사용하는 영역 Real Data 0x80000 64kbyte, Real mode가 사용하는 영역 Application Code 0x100000 FF * 4kbyte, 응용 프로그램이 사용하는 영역 Data 0x100000 FF * 4kbyte, 응용 프로그램이 사용하는 영역 TSS Descriptor Task gate Scheduler에 의해 실행되는 작업. System init System을 초기화 할때만 사용. Timer Timer Interrupt가 발생하였을 때. Soft Task Switching Switching Timer 가 아닌 Software 적으로 Task switching를 하기위해. Back to real mode Real mode로 전환시.
  20. 20/66 Interrupt and Exception Vector NO. Description Type 0 Divide Error Fault 1 Debug Fault / Trap 2 NMI Interrupt Interrupt 3 Breakpoint Trap 4 Overflow Trap 5 BOUND Range Exceeded Fault 6 Invalid Opcode Fault 7 Device Not available Fault 8 Double fault Abort 9 Coprocessor segment overrun Fault 10 Invalid TSS Fault 11 Segment not present Fault 12 Stack segment fault Fault 13 General protection Fault 14 Page fault Fault 15 Intel reserved. Do not use. Fault 16 FPU error Fault 17 Alignment check Fault 18 Machine check Abort 19 SIMD Floating point exception Fault • 현재의 예외 상황을 화면에 문자로 출력하고 원래 작업하던 곳으로 iret • 몇몇개의 예외 상황에서는 상황을 화면에 문자로 출력후 시스템을 정 지 시킴.
  21. 21/66 Task Switching(1/5) • TSS를 사용한 Task Switching – TSS란? • Task State Segment 의 약자로서 Task switching 시 CPU의 레지스터 값들을 메모리상에 저장하는 영역. • Task 마다 하나씩 존재.
  22. 22/66 Task Switching(2/5) • TSS는 104Byte의 크기를 가지며 CPU가 가지고 있는 거의 모든 레 지스터를 저장 할 수 있다. • CR0, IDTR, GDTR 과 같이 시스템 전역으로 사용되는 레지스터는 TSS에 저장 되지 않는다. • Task(Thread)마다 하나의 TSS를 가지고 있다.
  23. 23/66 Task Switching(3/5) • Task switching은 언제 일어나는가? – Hardware or Software interrupt. – Jmp, call, iret command.
  24. 24/66 Task Switching(4/5) Task 1 Task 2 CALL Busy bit 1 NT bit 1 Busy bit 1 Previous task link 필드에 Task 1의 selector 저장 iret TR : Task1 TSS TR : Task2 TSS CALL과 IRET에 의한 Task Switching
  25. 25/66 Task Switching(5/5) 생성된 모든 Kernel Threads Start Task Switching USB Read, Write Task switching Get Next Thread TSS Change 28h TSS Descriptor Task switching Get Next Thread TSS Change 28h TSS Descriptor Task switching 30h 28h 50h 40h 38h INT 31h IRET IRET IRET IRET INT 30h 현재 OS에서의 Task switching 구성도. Timer interrupt
  26. 26/66 USB(1/4) • USB Mass storage에 접근 방법. – Real Mode • Host Controller Driver, USB Driver • Bios가 USB Mass storage를 지원 한다면 Bios Interrupt function 13h을 사용하여 접근 가능. – Protected Mode • Host Controller Driver, USB Driver
  27. 27/66 Bios Interrupt function • Real Mode 에서만 사용 가능. • Protected Mode에서는 사용 불가. – Protected Mode는 IDT(Interrupt Descriptor Table)를 재정의 하기 때문. – 재정의를 하지 않으면?
  28. 28/66 USB(2/4) • Protected Mode 에서 Bios Interrupt fuction 을 사용하기 위한 방법. – Virtual 8086 Task를 생성 하여 Real Mode를 Emulation 한다. – 직접 Real Mode로 전환 하고 다시 Protected Mode로 돌아온다.
  29. 29/66 USB(3/4) • Virtual 8060 Task Emulation
  30. 30/66 USB(4/4) 28h TSS Threads - Console - File System - USB Driver - etc… 50h TSS If (!Real mode flag) 0x80000에 각종 정보 채우기 jmp 0x80000 + 24 Else EFLAGS NT bit set iretd 0x80000 Error code Return Address Real mode flag Index Size RW flag INT 31h iretd USB RW 1. Idt 재 등록 2. Back to Real mode 3. If (Rwflag) USB write else USB read 4. Real mode flag 설정 4. Protected mode 진입 5. Jmp Return Address USB Read, Write
  31. 31/66 Keyboard Driver • 키보드에서 어떤 이벤트가 발생 할 때마다 PIC의 Hardware Interrupt가 발생. • Interrupt가 발생하면 해당 ISR이 호출 되는데, 키보드 ISR 에서는 0x60 port 로부터 한 바이트를 읽어 raw_queue에 저장. • Keyboard Thread는 raw_queue에서 데이터를 하나씩 꺼 내어 실제 키 값으로 만들어줌.
  32. 32/66 Keyboard Driver ISR_keyboard Scancode = Readport(0x60) PushRawKeydata(Scancode) 0x28 0x39 0x11 Keyboard Thread PopRawScancode(key) if (Function key) flag set(alt, ctrl, shift, etc) Else KeyTable 참조 UserKey 생성. PushKeydata(key) ‘G’ ‘A’ ‘7’ Function GetKey() 함수 호출자 키눌림 RawQueue UserQueue
  33. 33/66 File Manager(1/1) • Command 기반의 인터페이스의 불편함을 조금 이라도 덜어보고자 제작된 프로그램. • 예전의 Mdir과 유사한 느낌.
  34. 34/66 Process and Thread(1/4) • PCB(Process Control Block) – Process ID – Next Process ID – Head Thread pointer – Thread count – Process name • TCB(Thread control Block) – Parent process handle – Thread ID – Thread state – Next thread pointer – Start routine – Stack base address – Stack size – TSS
  35. 35/66 Process and Thread(2/4) Thread Thread Thread Thread Thread Thread Process Process Process Manager Next Process pointer Process Manager에 의해 관리되는 Process와 Thread
  36. 36/66 Process and Thread(3/4) • Process의 생성 – PCB의 크기만큼 메모리 할당. – Process ID, 이름 부여. – Process Linked List에 추가. • Thread의 생성 – TCB의 크기만큼 메모리 할당. – Stack 메모리 할당. – Thread ID 할당. – TSS 설정.
  37. 37/66 Process and Thread(4/4) • TSS 설정. – Thread(Task) 생성후 scheduler에 의해 현재 Thread로 Task switching이 되었을때 올바른 동작 을 하기 위해.
  38. 38/66 Scheduler • 모든 Thread(Task)에게 시간을 균등하게 분배. • 타이머가 발생 할 때마다 Task switching. • Thread 에서 CPU를 사용하지 않아도 될 경우 Soft Interrupt 30h을 사용하여 다른 Thread로 Task switching. – 예 : 키보드 입력을 기다리는 경우.
  39. 하드디스크 드라이버
  40. 40/66 하드 디스크의 구성요소 • 트랙, 섹터, 실린더, 헤드로 구성. • 하드디스크 드라이 버가 접근 시 필요 한 정보는 헤드, 실 린더, 섹터이다
  41. 41/66 CHS 구조 • 롬바이오스: 섹터: 6bit 헤드: 8bit 트랙: 10bit • 하드디스크 컨트롤러 칩: 섹터:8bit 헤드:4bit 트랙:16bit • 결과적으로 인식할 수 있는 용량: 섹터: 6bit 헤드:4bit 트 랙:10bit • 초창기 IDE 하드디스크 용량 제한 – 2^20 * 512 BYTE = 528MB
  42. 42/66 LBA모드 • 0부터 시작하는 섹터번호를 접근하는 방식 • 전체 섹터수만 알면 된다 • LBA모드로 접근할 경우 논리 섹터번호는 CHS 구조로 분할되어하드 디스크 컨트롤러 칩에 전달된다 • 헤드: 4bit, 실린터: 16bit, 섹터: 8bit
  43. 43/66 하드디스크 레지스터(1/4) • 데이터 레지스터 – 데이터를 읽거나 쓸 때 사용 • 에러 레지스터 표기 설명 BRK 엑세스 도중 잘못된 섹터를 만남 UNC 복구할 수 없는 데이터 오류 MC 마지막 엑세스 이후 미디어 교체 IDNF 지정된 섹터의 ID를 찾을 수 없음 MCR 미디어 교체 버턴을 누름 ABRT 잘못된 명령 또는 드라이브 오류에 의해 명령이 중단됨 TK0NF 0번 트랙을 찾을 수 없음 AMNF 지정된 섹터를 찾을 수 없음
  44. 44/66 하드디스크 레지스터(2/4) • 섹터 카운트 레지스터 – 데이터를 읽거나 쓸 개수를 저장, 0은 256으로 인식 • 섹터 번호 레지스터 – 데이터를 읽거나 쓸 시작 섹터의 번호를 저장 • 하위 실린더 레지스터 – 실린더를 지정하는 16bit중 하위 8비트를 저장 • 상위 실린터 레지스터 – 실린더를 지정하는 16bit중 상위 8비트를 저장
  45. 45/66 하드디스크 레지스터(3/4) • 드라이브 헤드 레지스터 – 드라이브와 헤드 번호를 지정 – LBA: LBA모드 접근시 1 – DRV: 마스터 1, 슬레이브 0 – HEAD: 헤드 번호를 지정 1 LBA 1 DRV HEAD(4)
  46. 46/66 하드디스크 레지스터(4/4) • 상태 레지스터 – 명령레지스터와 같은 번지에 할당. 포트를 읽을 때는 상태 레지스터로 인식, 상태를 저장 • 명령 레지스터 – 데이터 기록시에 명령 레지스터로 인식, 명령을 저장 표기 설명 BUSY 명령 레지스터를 사용 중이므로 접근 할 수 없음 DRDY 드라이브가 명령을 받아들일 수 있는 상태 DF 드라이브에서 오류가 발생함 DSC SEEK 명령이 성공적으로 수행되었음 DRQ 데이터 레지스터로 정보를 주고 받을 수 있음 CORR 교정할 수 있는 오류 발생 IDX 매체 회전 중 인덱스 마크 부분이 헤드 바로 아래를 지날때 ERR 명령 실행 도중 오류 발생. 에러 레지스터에 원인이 저장
  47. 47/66 장치 정보얻기 • 드라이브가 BUSY가 클리어 될 때까지 기다린다 • 헤드 레지스터를 기록한다 • 명령 레지스터에 장치 검색명령을 준다 • 장치의 인터럽트를 기다린다 • 데이터 레지스터에서 데이터(장치 정보)를 읽는다 *인터럽트가 오지 않는다면 장치가 존재하지 않는 것이다
  48. 48/66 하드 디스크 읽기/쓰기 • 드라이브가 BUSY가 클리어 될 때까지 기다린다 • 섹터 카운트, 섹터 번호, 실린더, 헤드 레지스터에 데이터를 기록 • 명령 레지스터에 읽기/쓰기 명령을 준다 • 장치의 인터럽트를 기다린다 • 상태 레지스터가 DRQ가 Set 되기를 기다려 데이터 레지스터에서 한 섹터씩 읽는다. *읽정 시간 인터럽트가 오지 않는다면 읽기/쓰기가 실패한 것
  49. 49/66 파일 시스템
  50. 50/66 파일 시스템 • 파일 시스템은 저장장치내에서 데이터를 읽고 쓰기위한 약속이다 • 파일 시스템은 파일을 찾기 쉽게 구조화하여 저장한다 • 파일 시스템은 하드디스크, CD-ROM, USB장치에 사용될 수 있다 • 필요성: 운영체제와 호환, 보안, 성능, 안정성 등
  51. 51/66 파티션 • 물리적인 디스크를 논리영역으로 나누어 관리가 편하게 하기 위해 • 0S영역과 Data영역으로 나누어 관리 • 여러 0S를 설치하기 위해 • 물리적 배드 섹터 영역을 제외하고 사용하기 위해 • 파일 시스템의 최대 용량이 부족해서(FAT16 최대용량: 2GB)
  52. 52/66 MBR(Master Boot Record) • 부트 레코드(BR): 각 파티션의 첫번째 섹터에 위치,해당 파티 션의 os를 부팅해 주는 역할 • 마스터 부트 레코드(MBR): BR 호출을 위한 부트 코드와 파티 션 테이블이 있다 MBR BR File System BR File System Boot Code (446 BYTE) Partition Table (64BYTE) Signature(0x55AA)
  53. 53/66 (BR)Boot Record • 섹터의 바이트수 • 클러스터의 섹터수 • FAT테이블의 개수 • 총 섹터수 • FAT테이블의 크기 • 루트 디렉토리의 클러스터 값 • 볼륨 레이블 • 파일 시스템 타입 FAT항목들 Boot Code Signature
  54. 54/66 MBR의 호출 과정 1. BIOS가 MBR(저장장치의 첫번째 섹터)로 점프. 2. MBR의 Boot Code에서 파티션 테이블을 읽어서 부팅이 가능한지 확인하여 해당 파티션의 BR로 점프 3. 부팅이 가능하다면 BR내의 Boot Code가 실행
  55. 55/66 FAT32 파일 시스템 • 예약 영역 – 미래를 위해 비워놓은 영역, 부트레코드의 저장과 주요항목백업(FSInfo) • FAT 영역 – 파일이나 디렉토리의 할당을 관리, 클러스터의 값을 저장 • 데이터 영역 – 대부분의 영역, 데이터들이 저장되는 영역 클러스터 단위로 관리 *클러스터: 파일시스템에서 파일을 읽고 쓰는 최소 단위 BR 예약영역 FAT FAT(복사본) 데이터 영역
  56. 56/66 FAT 영역 • 파일이나 디렉토리의 할당을 관리, 클러스터 값이 저장되 어 있다. 00 00 00 09 00 00 00 11 0F FF FF FF Cluster 2 Cluster 9 Cluster 17 Media Type Partition Table Cluster 2 Cluster 3 Cluster 4 Cluster 5 Cluster 6 Cluster 7 Cluster 8 Cluster 9 Cluster 10 Cluster 11 Cluster 12 Cluster 13 Cluster 14 Cluster 15 Cluster 16 Cluster 17 Cluster 18 Cluster 19 Cluster 20 Cluster 21 Cluster 22 Cluster 23 생략
  57. 57/66 Directory Entry • 파일명, 확장자 • 속성 • 생성 날짜, 시간 • 수정한 날짜, 시간 • 최근 엑세스한 날짜 • 첫번째 클러스터 값 • 파일 크기 Directory Entry 1 Directory Entry 2 Directory Entry 3 Directory Entry 4 생략
  58. 58/66 NTFS(1/5) – 구조 Boot Record Master File Table Data • Boot Record – 부팅 시키기 위한 기계어 코드와 NTFS의 Bios Parameter Block이 FAT32와 같이 있음. • MFT(Master File Table) – NTFS에서 파일 및 디렉토리의 정보를 담고 있는 테이블임 – MFT Entry 0~ 15번까지는 System 정보를 가지고 있음. – MFT Entry 5번이 Root Directory로 모든 파일의 검색 시작 지점이 됨.
  59. 59/66 NTFS(2/5) • 속성(Attribute) – MFT가 가진 여러가지 설정 값. – MFT에는 여러가지 종류가 있으며, MFT 종류에 따라 다른 속성을 가진다. • $FILE_NAME : 파일의 정보 • $DATA : 파일의 데이터 저장 • $INDEX_ROOT : 파일의 목록을 가진 B Tree의 Root • $INDEX_ALLOCATION : 파일의 목록을 가진 B Tree의 Child Node를 가지고 있음
  60. 60/66 NTFS(3/5) 다른 속성 Attr Header Index Root Header Index Entry1 End of Node Index Node Header Index Entry2 Unused Space 다른 속성 $INDEX_ROOT Attribute AAA.TXT MFT Entry 39 Child VCN : X CCC.TXT MFT Entry 57 Child VCN : X 파일을 가진 MFT의 모습 : 인덱스가 작은 경우
  61. 61/66 NTFS(4/5) Index Record 0 Index Record 1 Index Record 2 MFT Entry Header Attr1 Header Attr1 Content $INDEX_ALLOC Run List Unused Space 1 0 1355 3 2 3 1397 6 3 생략 Start VCN Start LCN Num Of Clus $INDEX_ALL Header
  62. 62/66 NTFS(5/5) 다른 속성 CCC.TXT MFT 57 Child VCN : 0 End of Node Child VCN : 4 Start LCN Start VCN Len 1045 0 8 다른 속성 MFT Entry $INDEX_ROOT $INDEX_ALLOCATION AAA.TXT MFT 39 Child VCN : X BBB.TXT MFT 99 Child VCN : X End of Node Child VCN : X Cluster 1045 DDD.TXT MFT 39 Child VCN : X EEEEEEEEE.TXT MFT 99 Child VCN : X End of Node Child VCN : X Index Record Header VCN:0 Index Record Header VCN:4 EEEEEE~1.TXT MFT 99 Child VCN : X
  63. 63/66 Disk Cache • 하드디스크의 느린Access 속도를 개선 – 하드디스크와 메모리는 현저한 Access 속도차이 • 이미 읽어들인 데이터를 다시 읽어들이지 않도록 한다 – 데이터 Access는 같거나 그 주위에 집중적으로 일어나는 경향이 있다 • 데이터가 기록되었을 때 매번 기록하지 않고 한꺼번에 기 록한다
  64. 64/66 Disk Cache 구현 • 해쉬 테이블: 엔트리의 빠른 탐색 • 엔트리의 관리 – 캐쉬 엔트리의 제한: 메모리의 한계 – 버리는 엔트리는 오래 참조되었으며 변경되지 않은 엔 트리 – 변경된 엔트리 리스트와 변경되지 않은 엔트리 리스트 로 관리하여 변경된 엔트리는 버릴 경우에 디스크에 기록한다.
  65. 65/66 Command Line Shell • 사용자와 운영체제 내부(커널)와의 인터페이스를 제공. • 명령어 – Dir: 파일과 디렉토리를 보여준다. – Mkdir: 디렉토리를 만든다. – Rmdir: 파일이나 디렉토리를 지운다. – Copy: 파일을 복사한다. – Type: 파일의 내용을 출력한다. – Cd: 현재 경로를 바꾼다. – Mdir: Lomos파일 관리자를 실행한다. – Ps : Process 정보를 보여준다.
  66. 66/66 프로젝트 일정 4월 5월 6월 7월 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 자료검색 OS스터디 USB 스펙 분석 부트섹터 인터럽트 루틴 메모리 관리 스케쥴러 하드 디스크 드라이버 FAT32 파일시스템 NTFS 파일 시스템 커맨드 쉘 MDIR 디버깅및 테스트
  67. 67/66 힘들었던점과 노하우 • 힘들었던 점 – 디버깅 할 수 있는 툴이 없음 – 스펙이 정확하지 않을때.. – 바이오스에 대한 자료를 구하기 힘들었음. • 노하우 – 디버깅 노하우 습득. – 바이오스 및 운영체제의 이해
Publicidad