https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/korean
해당 링크에 대해 정리한 내용이다..
운영체제의 주요 기능 - 가상화, 병행성, 영속성
책에서는 3가지의 기능을 중요하게 두고 나간다.
작업관리자에 있는 모든게 프로세스 -> 이런 프로세스들이 각각 돌아가게 도와주는것이 운영체제의 역할이다.
CPU의 가상화
<그림 5.2>
우리가 코드를 짤때는 단순히 하나의 출력값을 기대하고 코드를 짠다.
하지만 해당 코드를 여러번 실행하면 프로세서는 여러번 따로 실행하게 된다.
이는 프로세서의 가상화로 인해서 가능하게 된거면 그거에 대한 예시 코드이다.
<그림 5.4>
코드를 두번 실행시킨다면 같은 주소에 있는 코드여도 프로세서가 다르기 때문에
다른 메모리에 할당하여 서로 다르게 실행시키기 때문에
따로 실행됨.
병행성
공유변수 (전역변수) 프로세스가 공유하는 변수
각각 다른 프로세서가 공유 변수의 값을 증가시킨다고 한다면,
만약 1000번을 실행한다면 원하는 값이 나올 수 있지만
10000번 처럼 숫자가 높아지면 프로세서가 읽고 쓰고 저장하는 부분에서 겹쳐질 수 있기때문에 원하는 값이 나오지 않는다.
이를 os가 일치시켜주는게 병행성.
영속성