이거 왜 함?
단순히 시켜서 한다 ? 내가 생각하는 개발자의 기본 덕목 '생각하며 프로그래밍하기'에 어긋난다.
그래서 운영체제를 왜 해야하는지 납득해보자
운영체제는 사용자를 위해 하드웨어, 소프트웨어를 관리하는 시스템 소프트웨어다.
사용자를 위해 뭘 해주나 ? 👉 메모리(자원)를 효율적으로 관리하고 운영(스케쥴)한다.
또한 프로그램이나 다른 사용자가 데이터를 삭제하거나 중요 파일에 접근하지 못하게 자원 보호도 해준다.
그리고 주어진 문제(pintos에서는 thread?)를 정확하고 빠르게 처리해주려고 노력한다.
프로그래머는 사용자들에게 프로그램를 제공한다.
그 프로그램은 사용자의 정보를 보호하고, 메모리를 효율적으로 관리하고 빠르고 정확해야할 필요가 있다.(사용자를 유치하고 싶다면.)
위처럼 운영체제가 하는 일과 우리가 미래에 만들게 될 프로그램이 하는일은 비슷하다.
즉, 우리가 미래에 사용자들에게 더 좋은 s/w를 제공해주기 위한 연습이 핀토스 프로젝트라고 생각한다
그니까 좋은 개발자가 되고 싶다면, pintos열심히하자. 라는게 결론이다.
배운거
배운거 3줄 요약
1. 논리적인 생각을 키울 수 있었다.
2. 각자 과제를 수행하기보다는 과제를 수행하쟈.
3. OS의 기본 동작
파일이 이렇게 많은 프로젝트를 처음 만져보았다.
PintOS 전체가 어떻게 돌아가는지 모두 이해하진 못했지만 donation과제까지 수행하며 논리적으로 생각하며
논리적인 생각을 키울 수 있었다.
alarm clock 구현할 때는 각자 코딩, priority scheduling 이후 부터는 팀원들과 모여 한 컴퓨터로 코딩을 했다.
코딩을 두 스타일로 해 보았을 때, 디버깅이 어려워 코드 하나하나 소중히 쳐야하는 c programming의 특성상
팀원들과 함께 코딩하는 것이 더 좋다는 것을 깨달았다. (실시간으로 지식도 공유할 수 있따!)
이번 주차를 진행하며 더 깊이 공부했던 os 부분은 동기화, cpu scheduling이다.
Synchronization (동기화)
공유 자원에 동시 접근은 데이터의 불일치 문제를 발생시킬 수 있다. (자원이 불정확하게 제공될 수 있다)
동기화란 위 같은 상황을 막기 위해 Race condition(경쟁 상태)을 막고
일관성을 유지하기 위해서 협력 프로세스 간의 실행 순서를 정해주는 메커니즘이다. (= 자원을 정확하게 주기 위함)
원래 busy&wait로 동기화를 수행
👇
semaphore
👇
lock
monitor(condition)
을 사용하여 동기화를 하도록 코드를 수행
cpu scheduling Algorithms
컴퓨터 자원을 효율적으로 관리하기 위해 프로세스들 사이에서 CPU 할당을 위한 우선순위를 관리하는 일
cpu scheduling
원래 RR(Round Robin)이었던 것을
👇
priority
👇
priority - donate
👇
multiLevel feedback queue (구현 못함)
으로 구현했다.
하면서 각 개념은 물론 동작원리에 대해 배우게 되었다.
궁금한거
window7의 cpu scheduling algorithm
(아래 자료는 2009년 자료임 아마window7에 대한 설명일듯 10은 더 발전했을 듯)
multilevel feedback queue
Windows implements a priority-driven, preemptive scheduling system—the highest-priority runnable (ready) thread always runs, with the caveat that the thread chosen to run might be limited by the processors on which the thread is allowed to run, a phenomenon called processor affinity.
Windows는 우선 순위 기반의 선점형 스케줄링 시스템을 구현합니다.
가장 높은 우선 순위의 실행 가능한(준비된) 스레드가 항상 실행됩니다.
+ round robbin
Controlling the Quantum
You can change the thread quantum for all processes, but you can choose only one of two settings: short (2 clock ticks, the default for client machines) or long (12 clock ticks, the default for server systems).
모든 프로세스의 스레드 퀀텀을 변경할 수 있지만 두 가지 설정 중 하나만 선택할 수 있습니다.
짧게(2 클록 틱, 클라이언트 시스템의 경우 기본값) 또는 길게(12 클록 틱, 서버 시스템의 경우 기본값).
window의 동기화알고리즘 -> the balance set manager (=균형집합 관리자)
참고
https://www.microsoftpressstore.com/articles/article.aspx?p=2233328&seqNum=7
느낀거
사람은 생각보다 안자도 일상생활이 가능하다.
끝!
이 글을 보는 모든 이들 내일도 열코🔥🔥🔥🔥🔥🔥~!!
'SW정글사관학교' 카테고리의 다른 글
[SW 정글] 6/7 ~ 21 WIL - (feat, pintOS VM - all pass) (9) | 2022.06.21 |
---|---|
[SW 정글] 5/21 PintOS - alarm (0) | 2022.05.21 |
[SW 정글] 5/20 운영체제 - 스케쥴 (0) | 2022.05.20 |
[SW 정글] 5/19 운영체제 - 프로세스, 스레드, 스케쥴러 (0) | 2022.05.20 |
[SW 정글] 5/14 TIL - what is HTTP? (0) | 2022.05.17 |