2.1 운영체제, 프로세스, 스레드의 근본 이해하기

모든 것은 CPU에서 시작된다

cpu는 오직 1. 명령어를 가져온다 , 2. 명령어를 실행한다 를 반복 실행하는 단순한구조이다. 그렇기에 이 cpu로부터 시스템을 파악하는 것이 좋다.

거슬러 올라가보는 명령어 실행 순서.

  1. cpu는 명령어를 카운터 레지스터에서 가져오고,(작지만 빠른메모리)
  2. pc레지스터에는 메모리에 저장된명령어 주소(cpu가 다음에 실행할 명령어)가 저장되어있다.
    1. 기본적으로 pc레지스터가 저장하는 주소는 1씩 자동 증가하지만,(차례로 실행하ㅣ는구조이기 때문) , if else와 같은 구문을 만날 경우, 지정한 점프 대상 주소로 pc레지스터값을 동적으로 변경한다.
  3. 메모리에 저장된 명령어는 디스크에 저장된 실행 파일에서 적재되고, 실행파일은 컴파일러로 생성된다.
  4. 그리고 컴파일러는 프로그램이 작성된 코드. 를 통해 명령어를 생성한다.
    1. 여기서 시작 지점은 우리가 항상 선언하는 main입니다. 이 메인함수에 대응하는 명령어가 pc 레지스터에 기록되는 첫. 시작점입니다!

종합 : 코드→ 컴파일러가 실행파일을 생성→ 실행파일을 통해 명령어를 적재하여 메모리에 저장→ 레지스터가 뽑아서 저장해둠 → cpu가 읽어서 처리

CPU에서 운영 체제까지

위의 방법을 통해 우리는 운영체제없이도 명령어를 실행할 수 있지만, 실제로 하려면 생각보다 더 복잡한 과정을 요합니다.

또한, 수동 프로그램 실행에는 추가적인 단점이 많이 존재합니다.

  1. 한 번에 하나의 프로그램만 가능. (다중코어활용 불가.)
  2. 모든 프로그램은 사용할 하드웨어를 직접 특정 드라이버와 연결해야합니다.
  3. print와 같은 기본 라이브러리 함수마저 직접 코드를 짜야합니다.

멀티태스킹은 어찌하는가(그리고 프로세스)

cpu는 한 번에 한 가지 일만을 할 수 있기에, 여러가지 프로그램이 동시에 실행되는 것처럼 보이게 하기 위해 프로그램 여러개를 잠깐 실행했다가 중지하고,, 의 전환을 빠르게 반복합니다. 그럼 착시 가능