본문 바로가기
728x90

전체 글115

[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.
[pintos] Project 1_alarm [pintos] Project 1_alarm pintos는 기본 기능들만 구현된 작은 운영체제이다. 마치 tiny web server처럼 이 운영체제에는 실행중인 스레드를 잠시 재우고 다른 스레드에서 진행하는 하는 기능이 있는데, 처음에는 busy waiting 방식으로 구현되어 있다. 이를 Sleep / Awake로 구현하는 것이 첫 번째 과제이다. Busy waiting 구현 busy waiting은 매 시간 자고 있는 스레드를 깨워 시간을 확인한 후 아직 깨울 시간이 안됐으면 다시 재운다. 이를 계속 반복하다 꺠어날 시간이 되었을 때 깨우는 방식이다. 이는 매우 비효율적인 방식으로 많은 CPU 시간을 낭비한다. busy waiting은 아래와 같이 구현되어 있다. thread_yield 함수로 sc.. 2021. 10. 4.
[PintOS] 로딩 (Loading) [PintOS] 로딩 (Loading) 1. Loader 로딩(Loading) : pintos 첫 실행시 진행되는 부팅의 과정이다. 부팅(Booting) : 컴퓨터를 구동하여 기초적인 초기화 작업을 수행하고 운영 체제를 읽어오는 일련의 작업이다. 로더(Loader) : 부팅 작업을 진행하는 프로그램. Disk의 첫 번째 섹터에 저장되어 있다. 1) BIOS(ROM에 있음)가 로더(Loader)를 메모리에 로드(Load) 한다. BIOS는 컴퓨터가 구동된 후 저장 장치(Disk)의 첫 번째 섹터를 탐색해여 이 장치가 부팅 가능한지 검사한다. (BIOS : Basic Input/Output System 입출력 처리 펌웨어) Sector : 저장 장치(Disk)에서 데이터를 저장하는 최소 단위로, 한 섹터의 .. 2021. 10. 4.
[PintOS] 디버깅 도구(Debugging Tool)_printf, ASSERT, __attributes__, backtraces [PintOS] 디버깅 도구(Debugging Tool)_printf, ASSERT, __attributes__, backtraces Printf 코드 사이사이에 printf 함수를 넣어 출력을 통해 디버깅 할 수 있다. 간단하지만 효과적인 방법 ! ASSERT 표준 c library 중 하나인 assert.h 에 있는 매크로이다. pintos 에서는 에 구현되어 있다. /* NDEBUG는 디버그 모드가 아닌경우(릴리즈 모드)를 말한다.(Not DEBUG) * #ifndef는 매크로가 정의되지 않은 경우에만 코드를 컴파일 함. * ASSERT 매크로는 조건이 맞지 않을 때 프로그램 중단 */ #ifndef NDEBUG #define ASSERT(CONDITION) \ if ((CONDITION)) { }.. 2021. 10. 3.
21/10/02(토)_ 운동 일지 21/10/02(토)_운동 일지 얼마만에 글을 쓰는지 모를 정도로 오랜만이다. 컴퓨터 시스템 내용 들어오면서부터 바빠졌는데 OS project 주차에 오니 더욱 굉장히 할게 많다. 하지만.. .점점 더 즐겜러가 되어가는 낑깡... 어제 2시에 불고기버거 세트를 먹고 4시에 자서 그런지 오전에 좀 피곤했다. 점심 후 정신을 차리기 어려워 오랜만에 체력단련실. 저번 글에서 텐션 낮을 때는 최고 120, 최저 60정도라고 했는데, 이것보다 더 낮게 나온거 보니 확실히 혈압이 낮으면 집중하기 힘든 게 맞는거 같다. 하체 운동을 해서 혈액순환을 원할히 하면 좋을 것 같은데 다리로 무식하게 미는 운동보다 조정이 더 재밌을 것 같아 요즘은 조정을 깔짝깔짝 하고 있다. 어쨌든 잠 깨는 데 운동의 효과는 확실한걸로 ! .. 2021. 10. 3.
[OS운영체제] 권영진 교수님 OS 강의 (카이스트 전산학부) [OS운영체제] 권영진 교수님 OS 강의 (카이스트 전산학부) 키워드들 위주로 작성. 이후 검색해 볼 것 CS 에서 system 특히 Operating system이 전공필수가 되었다. 그만큼 중요하다. OS 시스템을 공부해야하는 이유가 뭘까?를 아는 게 공부하는 데 도움이 된다. 1. - mmap : 1MB 쓰겠다고 선언을 해도 실제로 주진 않는다. 가상 메모리에다가 allocation만 해준다. - memset으로 1로 채운다. 이 때 메모리를 준다. - on-demand allocation - 1MB에 4KB 씩 PA(RAM)에 page를 줌 - 처음 memory(Physical address) 접근시 page fault, 그 이후 할당 되고 2차 접근시 page fault 안남. 하지만 사용자 입.. 2021. 10. 1.
728x90