본문 바로가기
728x90

OS8

[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 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] 디버깅 도구(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.
[OS운영체제] Network Programming_TCP/IP echo server, echo client [OS운영체제] Network Programming_TCP/IP echo server, echo client echo서버는 클라이언트가 보낸 내용을 그대로 전송해 주는 프로그램이다. 그럼 echo 서버와 echo 클라이언트를 작성하여 보자. echo.c 함수 //echo - read and echo text lines until client closes connection /* $begin echo */ #include "csapp.h" void echo(int connfd) { size_t n; char buf[MAXLINE]; rio_t rio; Rio_readinitb(&rio, connfd); while((n = Rio_readlineb(&rio, buf, MAXLINE)) != 0) { //li.. 2021. 9. 26.
[Operating System 운영체제] Memory Management [Operating System 운영체제] Memory Management 메모리 관리(Main memory) 메모리 계층구조 Block : 보조기억장치와 주기억장치 사이의 데이터 전송 단위 - 1~4KB Word : 주기억장치와 레지스터 사이의 데이터 전송 단위 - 16~64bits (CPU 64비트가 이것의 의미와 거의 동일) Address Binding - 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑하는 작업 - Binding 시점에 따른 구분 Compile time binding - 메모리에 적재될 위치를 컴파일러가 앎 Load time binding - 메모리에 적재될 위치를 컴파일러가 모름 Run time binding - 수행할 때 address binding. 대부분의 OS가 사.. 2021. 9. 12.
[Operating System 운영체제] Computer System Overview 02 [Operating System 운영체제] Computer System Overview 02 운영체제의 역할 1. 운영체제의 역할 1) User Interface(편리성) CUI(Character user interface) GUI(Graphical User interface) EUCI(End-User Comfortable Interface) - 특수목적. ex) MP3 플레이어용 UI 2) Resource management(효율성) HW resource(processor, memory, I/O devices, Etc.) SW resource(file, application, message, signal, Etc.) 3) Process(실행 주체) and Thread(가벼운 프로세스) managemen.. 2021. 8. 31.
728x90