본문 바로가기

SW정글사관학교

[SW 정글] 5/22 ~ 25 WIL - (feat, pintOS)

반응형

이거 왜 함?

 

단순히 시켜서 한다 ? 내가 생각하는 개발자의 기본 덕목  '생각하며 프로그래밍하기'에 어긋난다.

 

그래서 운영체제를 왜 해야하는지 납득해보자

 

운영체제는 사용자를 위해 하드웨어, 소프트웨어를 관리하는 시스템 소프트웨어다.

 

사용자를 위해 뭘 해주나 ? 👉  메모리(자원)를 효율적으로 관리하고 운영(스케쥴)한다.

 

또한 프로그램이나 다른 사용자가 데이터를 삭제하거나 중요 파일에 접근하지 못하게 자원 보호도 해준다.

 

그리고 주어진 문제(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

 

 

느낀거

사람은 생각보다 안자도 일상생활이 가능하다.

 

끝! 

 

이 글을 보는 모든 이들 내일도 열코🔥🔥🔥🔥🔥🔥~!!

 

 

반응형