728x90 정글 2기/OS 운영체제25 [Pintos] Project 2_User Program_system call [Pintos] Project 2_User Program_system call System call details OS에 의해 제공되는 Programming interface이다 user mode program이 kernel feature를 사용하게 해준다. system calls은 kernel mode에서 run하고 user mode로 돌아온다 system call의 핵심은 system call을 부르기 위해 hardware(external) interrupt 가 발생하기 때문에 execution mode의 priority가 special mode로 격상한다는 점이다. 이전 x86 architecture에서는 system call이 software exception으로 처리되었다. 하지만 x86-64에.. 2021. 10. 14. [three_easy_pieces] 파일 시스템(File system)_vsfs(Very Simple File System) [three_easy_pieces] 파일 시스템(File system)_vsfs(Very Simple File System) 파일 시스템에 대해 학습할 때 두 가지 측면으로 접근이 중요 자료 구조 - 자신의 데이터와 메타 데이터 등을 관리하기 위해 디스크 상에 어떤 자료 구조? 접근 방법 - 어떤 시스템 콜? vsfs(Very Simple File System)의 자료 구조를 보자 블럭(Block) : 디스크를 누나는 단위. 4KB 메타 데이터(Metadata) : 파일에 대한 정보 (크기, 권한, 소유자, 변경 시간 등) 아이노드(Inode) : 메타 데이터를 저장하는 자료구조 D : Data region - 사용자 데이터가 있는 디스크 공간 I : Inode table- 아이노드들이 배열형태로 저장됨.. 2021. 10. 13. [OS운영체제] 권영진 교수님 OS 강의_2 (카이스트 전산학부) [OS운영체제] 권영진 교수님 OS 강의_2 (카이스트 전산학부) 1부 c를 대신해 RUST 를 사용하려는 움직임이 있다. RUST로 OS로 만들고 있다. 핀토스를 직접 안짜고 이해만 하고 있어도 프로그램을 짜는데 도움이 된다. -> 커널과 유저가 해야하는 일 각각을 알고 있어야 유저가 뭘 해야하는지 안다 mmap file-backed (read, write) MAP_ANONYMOUS - stack, heap mmap과 write(fd, buf, 3)는 똑같은 기능. 하지만 성능이 다르다. mmap은 kernel이 바로 storage에 복사 read write는 한 번 복사한 후에 kernel이 DMA로 storage에 복사 1강 정리 Abstraction process - machine thread -.. 2021. 10. 11. [Pintos] Project 2_Calling convention_Caller, Callee and registers [Pintos] Porject 2_Calling convention_Caller, Callee and registers 함수 호출 규약 Calling Convention 함수 호출 규약(Calling Convention)을 이해하기 위해서는 스택과 스택 프레임에 대한 정확한 이해가 있어야 한다. 각각의 thread 마다 stack 이 생성되고, 각각의 함수마다 stack frame이 존재한다. stack frame에는 해당 함수에 관련된 데이터가 push, pop되는데, 이를 위해 main()과 sum() 함수의 대화 방식이 같아야한다. 이 방식을 함수 호출 규약(Calling Convention) 이라고 한다. 함수 호출 규약 (Calling Convention) - 함수 호출 규약은 아래 4가지 값을.. 2021. 10. 9. [three_easy_pieces] 가상 메모리(Virtual memory)_주소 변환의 원리 [three_easy_pieces] 가상 메모리(Virtual memory)_주소 변환의 원리 가상 메모리를 물리적 메모리로 매핑하는 과정을 이해하는 것은 중요하다. 이를 주소 변환이라 한다. 코드 void func(){ int x = 3000; x = x + 3; // 우리가 관심있는 코드 } 어셈블리어 128 : movl 0x0(\%ebx), \%eax ; 0+ebx를 eax에 저장 132 : addl \$0x03, \%eax. ; eax 레지스터에 3을 더한다 135 : movl \%eax, 0x0(\%ebx) ; eax를 메모리 (스택)에 다시 저장 레지스터 (Register) ebx (extended base address register) : 메모리 주소 저장을 위한 레지스터 - x 주소 저장.. 2021. 10. 7. [pintos] Project 1_priority scheduling [pintos] Project 1_priority scheduling 전체적인 흐름을 이해하기 위해서는 header file에 구현되어 있는 구조체와 멤버 그리고 구조체를 파악하는 게 도움이 된다. thread.h struct thread { /* Owned by thread.c. */ tid_t tid; /* Thread identifier. */ enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ int priority; /* Priority. */ /*-------Project 1, priority_donation------*/ int init_priority; // thre.. 2021. 10. 4. 이전 1 2 3 4 5 다음 728x90