컴퓨터 시스템 13

컴퓨터 시스템/OS [WIL] 컴퓨터 운영체제 ' File System' (pintos project 4) - 작성 중

pintos 마지막 주차다. 마지막 주차인데 구현할게 많은데 다른 주차에 대비해서 시간이 많지 않은 것 같다. 제대로 공부하고 배운내용을 잘 정리할 수 있을지 잘모르겠다 우선 의식의 흐름대로 배운걸 작성해야 할 것 같다. 오늘은 일단 시작 전에 테스트 케이스가 어떻게 돌아가는지 확인하고 수정해보려고 돌려봤는데.. 1 - 3주차까지 통과시켜놓았던 테스트 케이스가 다시 모두 fail 나는 것을 확인했다. 이 부분만 보면 파일시스템이 뭔가 제대로 작동하지 않고 있다는 추론이 가능했다. 파일시스템에 대해 자료를 찾아 공부하고 FAT 시스템이 작동하게끔 코드를 수정하니 기존에 pass하던 test case들이 통과됨을 확인했다. 돌아가다가 멈추는 경우와 애초에 안돌아가는 것을 디버그하는 것은 좀 느낌이 다른 것 ..

컴퓨터 시스템/OS [WIL] 컴퓨터 운영체제 ' Virtual memory ' (pintos project 3)

회고 및 잡설 Pintos 초기에는 어려운 난이도와 디버그의 빡침을 못참고 혼자 샤우팅을 하곤했다. 한달 정도 지나니 난이도에 어느정도 적응하고 무언가 잘 되지 않더라도 내면의 분노를 다스리는 것을 넘어서 이제는 감정에 무뎌진 나를 발견했다. 이번주차에 진행된 Pintos project는 Virtual memory에 대한 내용이다. 책으로 처음 접했을 때 와닿지 않았던 부분들을 이해할 수 있는 뜻깊은 시간이다. 1, 2주차와 마찬가지로 책에서 관련내용을 읽고 처음에 상황을 이해하는데 초반 몇 일을 소모했다. 많이 어려웠지만 늘 그랬듯이 시간을 갈아넣어서 그래도 많은 공부가된 것 같다. 아직도 배워야 할 것들이 너무 많기 때문에 핀토스 메뉴얼이나 개념 설명글을 작성하는데에 시간을 많이 쓰고 싶지 않다. 단..

ELF 파일구조 및 헤더

OS에서 초기 process exec( ) 함수 내부에 ELF 형식의 실행파일을 load 한다. 자세히 숙지는 하지 못했지만 load, load_segment( ) 함수를 이해하는데 ELF 파일구조가 도움이 되었음 참고 자료 추후 다시 공부해볼 것 https://pu1et-panggg.tistory.com/32 ELF 파일 구조 ELF란? 실행 가능한 바이너리 또는 오브젝트 파일 등의 형식을 규정한 것이다. ELF파일 = ELF헤더 + 프로그램 헤더 테이블 + 섹션 헤더 테이블 오프젝트 파일은 세가지 종류가 있다. - pu1et-panggg.tistory.com https://doitnow-man.tistory.com/228 [ELF] 3. ELF header 분석 1. ELF Header의 역활 이 파..

[WIL] 컴퓨터 운영체제 'USER PROGRAMS' (pintos week2) - 작성 중

PINTOS week 2 수행과제 Pintos week2 수행 주제 - 'User program' 1주차까지 kernal thread만 다루었다. 이번 주차부터 user program 실행, 종료 및 주요 System call (system handler)등을 구현하며 시스템콜 작동 원리를 익힌다. 구현 과제 - argument passing / syscall handler / syscall / user memory access / denying writes executables WIL Key word Argument passing & x86-64 Calling Convention System call ( Syscall handler, Syscall, exception, register ) user mo..

[WIL] 컴퓨터 운영체제 'Thread' (pintos week1)

PINTOS 설명 및 수행과제 OS프로젝트는 PintOS의 코드를 직접 수정해가며 진행하는 프로젝트이다. PintOS는 2004년 스탠포드에서 만들어진 교육용 운영체제이다. 정글에서는 이를 기반으로 KAIST 권영진 교수님 주도 하에 만들어진 KAIST PintOS로 운영체제 학습을 시작했다. Pintos week1 수행 주제는 'Thread'이다. thread의 scheduling algorithm을 develop해가며 학습이 진행되었다. 처음에 기본으로 주어지는 pintos code는 정상적으로 작동하되 부분적으로 비효율적으로 구동하게끔 구성되어 있다. 비효율적으로 작동하는 부분들을 개선시키며 과제들을 PASS 시킨다. 총 3가지 문제로 구성되어 있으며 첫 번째 문제인 alarm clock문제를 해결..

OS review / Youngjin Kwon

강의듣다가 기록 Top school은 OS가 전필임 한국도 변화가 필요함. OS에서 하는일 예시 mmap (1mb) 예시 mmap 선언시 가상메모리에 할당만되고 실제 메모리에 할당되지 않는다. VM에 먼저 할당이 되고, 요청시 page fault가 나면서 할당이됨 memset 으로 1로 해당 영역 초기화할때 비로소 할당이된다. memset으로 2로 다시 초기화했을 때 더 빨리 할당이 됨 ( page fault가 없어서 ) (memset으로 2번째 실행시에는 cache hit 도 발생) 동일한 예시 mmap (1gb) - map size is way beyond cpu cache size! (1mb일때는 바로 cach에 다 올라갈 수 있었음) page와 cache를 이해하고 pagefault와 cache ..

[ CSAPP / ch11 ] tiny web server, web proxy

리눅스 환경에서 CSAPP교재 CH11 네트워크 프로그래밍 부분에 나와 있는 tiny web server와 web proxy server 코드.. 처음에는 책에 나와있는 대로 단순히 HTTP protocol 을 통해 데이터를 요청만 가능한 있는 tiny 서버를 만들어보았다. 그리고 ch12 장 동시성 프로그래밍에서 배운 내용을 토대로 pthread 함수를 사용하여 다중 쓰레딩도 가능한 서버를 만들어 보았다. 주석은 달았으나 다른거 공부하느라 시간이 없어서 포스팅내용은 추후에 디벨롭.... // Tiny web server #include "csapp.h" void doit(int fd); void read_requesthdrs(rio_t *rp); int parse_uri(char *uri, char *..

C 입력 버퍼와 출력 버퍼 stdin, stdout

표준 입출력과 버퍼 개념에 대해 제대로 몰라서 어제밤에 코드 실행 결과를 이해하는데 조금 삽질을 했다. 코드의 특정 라인에서 printf("00")로 실행 했을 때와 printf("00\n")이 화면에 표시되는 출력타이밍이 달랐다. 기존에 이해하고 있던 내용은 printf 함수를 단순히 화면에 문자를 출력해주는 함수로이고, '\n'는 단지 줄을 바꿔주는 역할만 한다고 생각을 하고 있었다. 하지만 실제로는 \n은 버퍼를 비워주는 역할을 한다. printf, scanf 에서 사용되는 버퍼는 \n를 만나거나 프로그램이 종료시에 비워진다. 읽은 자료. https://shoark7.github.io/programming/knowledge/what-is-standard-stream 표준 스트림, 표준 입출력에 대해..

웹 서버 기본 개념 정리(네트워크, TCP/IP , 소켓 프로그래밍) -작성중

이번주에는 웹 서버의 개념을 기초수준부터 정리하고 많이 사용되는 개념인 TCP/IP를 정리하고자 한다. 1. 클라이언트 - 서버 프로그래밍 모델 2. 네트워크 3. TCP/IP 프로토콜 1. 클라이언트 - 서버 프로그래밍 모델 거의 모든 네트워크들의 기본모델이다. 실제 세계에서 Client side에서 Server에 요청을하면 server에서 동적, 정적 컨텐츠를 보내줌. 서버는 리소스를 관리하고 리소스를 조작해서 클라이언트가 원하는 서비스를 제공함. 예를 들어, 1. 브라우저에서 특정 domain (서버 주소) 으로 접근하면 server에서 메인화면을 브라우저에 전송해준다. - 웹서버 2. 혹은, 다른 서버간의 파일 교환하는 소프트웨어 ex)파일질라 - FTP 클라이언트와 서버는 프로세스이며, 머신이나..

Code Review 란 무엇인가?

유튜브를 통해 전산학부 교수님의 코드리뷰에 대한 강의를 들었다. 실제로는 방대한 내용이라고 하셨는데, 간단하고 핵심인 부분만 요약해주셨다. 경험이 많은 건 아니지만 와닿는 내용이 꽤 있었다. 동영상을 보면서, 나중에 일을 하면서 다시 기억을 하기 위해 몇 가지 중요해보이는 키워드를 적어 보았다. Software Development Models 과거 - 개발 대상의모든 스펙을 협의하고 갖추고 한번에 시작 , 최소한의 변경점 Waterfall modelCareful code design Minimal updates 현재 - 테스트 버전 런칭 후 지속적인 develop Agile model Continuous integration Continuous deployment 이러한 이유로 코드 리뷰가 중요해지고 ..

컴퓨터 시스템 2021.09.15