SW사관학교 정글25 In the jungle on the last day of 2022 기억에 남을 2022년과 기억에 남은 2022의 마지막 날 2022. 12. 31. [PintOS] Project 3: Virtual Memory Introduction Introduction * 회색으로 표시해놓은 부분은 개념이 헷갈리거나 모르는 부분 * Special Thanks to class B translators ..~ Project3: Virtual Memory 당신의 OS는 여러 개의 쓰레드를 알맞게 동기화해서 적절히 핸들링할 수 있고, 여러개의 유저 프로그램을 한번에 로드할 수 있다. 그러나, 돌릴 수 있는 프로그램의 개수와 사이즈는 머신의 메인 메모리 크기에 맞춰 제한되어있다. 이번 과제를 통해 무한의 메모리의 환상(을 만들어서 그 제한을 제거해보자. 🕗 💡 프로젝트 3을 진행함에 있어 편의를 위해 단계별 가이드를 제공한다. 1. Background 배경 1-1) Source Files 소스파일 이번 프로젝트에서는 vm 디렉토리에서 작업하게 될 것이다... 2022. 12. 13. 핀토스는... 내 맘을 ... [2022년 12월 어느 나날의 일상 ] 자다가도 핀토스 생각 ... 씻다가도 핀토스 생각 ... 밥먹다가도 핀토스 생각.... 핀토스... 넌 왜 내 맘을 몰라주는거야 !!!! 핀토스는 사람을 무기력하게 만든다. 요즘 운영체제라는 과목을 들으면서 핀토스 프로젝트를 하고 있다. PINTOS 작은 OS라는 뜻이다. Pintos는 운영체제의 기본이 되는 scheduling, user program 다루기, virtual memory management, file system을 코드로 darkhamtory.tistory.com (다시 코드 보러가기 ...) 2022. 12. 11. [PintOS] Threads 다시 보다가 문맥교환(Context Switching) 이해하기 Gitbook Project 1: Understanding Threads를 다시 읽어보았다. https://casys-kaist.github.io/pintos-kaist/project1/introduction.html 내가 이해했던 부분을 적은 것이기 때문에 흐름이 오락가락 할 수 있다. When a thread is created, you are creating a new context to be scheduled. You provide a function to be run in this context as an argument to thread_create(). The first time the thread is scheduled and runs, it starts from the beginning .. 2022. 12. 7. [PintOS] Project 2: User Programs (Argument Passing, System Calls) SW Jungle Week09 (2022.11.17 ~ 11.28) PROJECT 2: USER PROGRAMS WIL (Weekly I Learned) 11.18 금 Git book 과제 설명서 공부 11.19 토 Argument Passing 큰 그림 그리기 init.c init.c의 main 함수에서 read_command_line()함수를 호출하여 명령어를 읽어온다. -> argv 명령어로 들어오는 인자의 형태는 명령어와 그 명령어의 대상이다. 예를 들어 인자가 1개만 들어오는 경우(args-single.ck)라면, argv는 run 'args-single onearg'의 형태를 가진다. 호출된 명령어 parse_options를 통해 option에 따라 명령어를 적절히 parsing한다. 명령어는.. 2022. 12. 6. [PintOS] AWS에서는 되는데 WSL에서 출력 결과가 터지는 경우 팀원의 우분투(AWS)에서는 출력이 잘 되지만 나의 우분투(on WSL)에서는 계속 터지는 경우가 발생했다. 권한 문제일 수도 있다는 미스터 CW의 판단 아래 읽고, 쓰고, 실행하는 권한을 수정해준 이후 더이상 터지지 않는다. 1. WSL의 root 비밀번호를 설정한다. https://aorica.tistory.com/155 [ WSL ] 비밀번호 재설정 방법 WSL에서 root 계정이나 다른 계정의 비밀번호를 잊어버렸을 경우 재설정 하는 방법입니다. 1. cmd를 관리자 권한으로 들어가셔서 다음과 같이 입력합니다. 저는 root 계정의 비밀번호를 재설정할 것 aorica.tistory.com root에서 비밀번호를 설정한 이후에 su 명령어를 통해 WSL의 root로 들어간다. 이 과정에서 WSL의 비.. 2022. 11. 22. [PintOS] Project 2: User Programs 큰 그림 그리기 Project 2: User Programs💡Git book Introduction Background & Our goal PintOS Project 1에서 실행했던 Alarm clock, Scheduling 등 모든 코드는 OS 커널의 한 부분이었다. 구현했던 코드들은 커널의 일부로서 시스템에 중요한 부분에 접근할 수 있는 특권을 가지고 실행되었던 것이다. 테스트 코드 또한 직접 컴파일 했었다. 이제 Project 2에서는 유저 프로그램을 실행할 부분을 작업할 시간이다. 해당 PintOS 코드에서 유저 프로그램을 로드하고 실행하는데 필요한 기본 코드들은 이미 있지만, 이 코드로는 I/O나 상호작용이 가능하지 않다. 즉, 프로그램이 시스템 콜을 통해서 OS와 상호작용할 수 있도록 만들어야한다. OS 위에.. 2022. 11. 20. [PintOS] 인터럽트는 무엇이며, 왜 필요하며, 타이머 인터럽트의 역할은 무엇인가 Interrupt Interrupt(인터럽트)를 직역하면 방해라고 해석할 수 있는데 인터럽트라는 개념을 받아들이기가 사실 버거웠다. 뭔가 모르게 잘 와닿지 않았던 부분이 있었지만 이해한 내용을 정리해보자. 😭😓 인터럽트는 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생해서 처리가 필요할 경우에 CPU에 알려서 처리하는 기술이다. 인터럽트는 내부 인터럽트와 외부 인터럽트로 나눌 수 있다. 1. 내부 인터럽트 : 주로 프로그램 내부에서 잘못된 명령 또는 잘못된 데이터 사용시 발생 (예를 들어, 0으로 나눴을 경우/사용자 모드에서 허용되지 않은 명령 또는 공간 접근 시/계산 결과가 Overflow/Underflow가 나는경우) 2. 외부 인터럽트 : 입출력 장치, 타이.. 2022. 11. 18. [PintOS] Project 1: Threads (Alarm clock, Priority Scheduling) & 회고 SW Jungle WEEK08 (2022.11.10 ~ 11.16) PROJECT 1: THREADS WIL (Weekly I Learned) 11.10 목 작업환경 세팅 (EC2, Ubuntu18.04) + repo 생성 PintOS project Git Book 읽기 11.11 금 KAIST 권영진 교수님 OS 강의 공부로 도망치지 마세요. from 코치님 11.12 토 PintOS 전반적인 코드 파악 /threads/init.c /threads/thread.c /lib/kernel/list.c & /include/lib/kernel/list.h /tests/threads/tests.c /threads/synch.c 11.13 일 Alarm clock 구현 Alarm Clock이란? 호출한 프로세스를.. 2022. 11. 18. 이전 1 2 3 다음