코드 훔쳐보는 변태 코더
춤 좋아하는 백엔드 개발자(였으면 좋겠다)
운영체제 이론 03-21 (정리)

컴퓨터 시스템의 범위

  • 컴퓨터 시스템의 계층
    • 응용프로그램
    • 운영체제
    • 컴퓨터 하드웨어
  • 컴퓨터 시스템 계층 구조의 특징
    • 사용자는 응용프로그램과 GUI / 도구 프로그램 (툴, 유틸리티) 을 통해 컴퓨터를 활용할 수 있다.
    • 하드웨어는 모두 운영체제의 독점적 지배를 받는다.
    • 사용자나 응용 프로그램의 하드웨어에 대한 직접 접근이 불가능하다.
      • 운영체제를 통해서만 접근이 가능하다.
  • 계층 구조로 보는 운영체제의 기능
    • 사용자가 하드웨어에 대해서 알지 못해도 컴퓨터를 사용할 수 있도록 한다.
    • 응용프로그램과 하드웨어 사이를 중계해준다.
      • 응용프로그램 ↔ 하드웨어, 인터페이스

하드웨어 설명

  • CPU (중앙 제어 장치)
    • 프로그램 코드를 해석하여 실행하는 중앙처리 장치
    • 가장 핵심 장치이다.
    • 전원이 공급될 때 작동이 시작되고, 메모리에 적재된 프로그램을 실행한다.
  • 메모리
    • CPU에 의해 실행되는 프로그램 코드와 데이터가 적재되는 공간이다.
    • RAM
    • 프로그램은 실행되기 위해선 반드시 메모리에 적재되어야 한다.
  • 캐시 메모리
    • CPU의 프로그램 실행 속도를 높이기 위해서 CPU와 메모리 사이에 빠른 메모리를 설치하게 되어서 탄생하였다.
    • 온칩 캐시 → CPU 내부에 만들어진 캐시. (대부분 온칩 캐시를 사용한다.)
    • 옵칩 캐시 → CPU 외부에 설치되는 캐시
    • 캐시 메모리가 있는 경우엔 CPU는 캐시 메모리에서만 프로그램을 실행한다.
      • 캐시는 용량이 작기 때문에 현재 실행할 코드와 데이터의 극히 일부분 만 저장한다.
  • 버스
    • 하드웨어들이 데이터를 주고받기 위해 0과 1의 디지털 신호가 지나가는 여러 가닥의 선을 다발로 묶어 부르는 용어이다.
      • 컴퓨터의 버스 → 도로, 컴퓨터의 데이터 → 자동차
    • 버스의 종류
      • 주소 버스 → 주소 신호가 지나다니는 버스
      • 데이터 버스 → 데이터 신호가 지나다니는 버스
      • 제어 버스 → 제어 신호가 지나다니는 버스
    • 주소
      • 레지스터에 대한 번지수
      • 0번지에서 시작하는 양수이다.
      • 주소 버스는 주소 값이 전달되는 여러 선의 다발이다.
      • CPU는 메모리나 입출력 장치에 값을 쓰거나 읽을때 반드시 주소를 발생시킨다.
  • 목적에 따라서 버스를 구분한다.
    • 시스템 버스
      • CPU, 캐시 메모리, 메모리 등 빠른 하드웨어 사이에 데이터를 전송한다.
      • 고속도로에 비유된다.
    • 입출력 버스
      • 상대적으로 느린 입출력 장치들로부터 입출력 데이터를 전송한다.
      • 일반 도로 에 비유된다.
  • IO 컨트롤러 & 컨트롤 서킷
    • 입출력 장치들을 제어하기 위한 여러 하드웨어이다.
      • 입출력 장치에게 명령 하달 → 메모리와 입출력 장치 사이에 혹은 CPU와 입출력 장치 사이에 데이터를 전달 중계한다.
      • DMAC, 인터럽트 제어장치 등을 포함한다.

 

더보기

컴퓨터는 응용소프트웨어, 시스템소프트웨어, 하드웨어 이렇게 볼 수 있다.

운영체제는 소프트웨어와 하드웨어 사이의 중계를 하고, 하드웨어에 대한 독점적인 지배 권한을 갖는다.

사용자는 운영체제를 통해 하드웨어에 대해 몰라도 컴퓨터를 사용 할 수 있다.

하드웨어 → CPU, 메모리, 입출력장치 정도 (폰노이만구조 1940년대)

버스 → 주소버스, 데이터 버스, 제어버스, CPU는 입출력 장치에 값을 쓰거나 읽을때 반드시 주소를 발생시킨다.

시스템 버스와 입출력 버스로 목적에 따라 버스를 구분한다.

I / O 컨트롤러는 입력 및 출력 장치 인 다양한 주변 장치를 연결하고 제어하는 데 도움이 된다.

 

 

  • CPU
    • 능동적 소자이다. 메모리 액세스 시 주소를 발생시킨다. (주소번지에 있는 명령을 가져올 수 있도록 처리를 한다.)
    • 32비트 CPU, 32비트 운영체제, 32비트 컴퓨터란 ?
      • CPU에 32개의 주소선이 존재하는 것
        • CPU의 액세스 범위 : 2^32개의 서로 다른 주소
        • CPU가 최대 액세스 할 수 있는 메모리의 크기가 4GB가 된다.
        • 한 번지의 공간이 1바이트 이므로, 2^32 개의 주소 = 2^32 바이트 = 4GB
        • 32비트 CPU를 가진 컴퓨터는 4GB를 넘어선 영역은 사용할 수 없다.
      • CPU에 입출력되는 32개의 데이터 선이 존재한다.
        • 한번에 32비트 읽고 쓰기가 가능하다.
  • CPU 명령
    • CPU가 해석하고 실행할 수 있도록 하는 기계명령
      • C언어나 자바의 프로그램 소스 코드와는 다르다.
      • CPU를 설계하는 기업이 명령어들, 명령어 개수, 형태 등을 결정한다.
      • CPU의 명령 개수는 수십개에서 수백개가 된다.
      • CPU마다 명령 이름, 기계어 코드, 크기, 개수 등이 다르다.
      • CPU 사이에 명령들의 호환성은 없다.
        • 컴파일된 코드는 CPU사이에 호환성이 없다.
  • CPU 레지스터
    • PC (Program Counter) → 다음에 실행할 명령의 메모리 주소를 저장한다.
    • IR (Instruction Register) → 현재 실행하기 위해 메모리로부터 읽어온 명령을 저장한다.
    • SP (Stack Pointer) → 스택의 톱 메모리 주소를 저장한다.
    • 데이터 레지스터 (data registers) → 연산에 사용되거나 사용될 데이터들을 저장한다.
    • 상태 레지스터 (status register) → CPU의 상태 정보나 인터럽트 금지 등의 제어 정보를 저장한다.
    • 기타 레지스터 → 페이지 테이블이 저장된 메모리 주소를 가리키는 레지스터 등
  • CPU 명령 사이클 → CPU가 하나의 명령을 실행하는 과정 / CPU는 전원이 켜진 후 단순하게 명령 사이클을 반복한다.

 

스택은 어디에 있는가?

  • 프로그램이 실행되기 위해 운영체제에 의해 할당되는 4공간
    • 코드 공간 → 프로그램 코드를 적재한다.
      • 운영체제도 코드로 이뤄져있다.
    • 데이터 공간 → 전역 변수들이 적재되는 공간
    • 힙 공간 → 프로그램에서 동적 할당받는 공간
    • 스택 공간 → 함수가 호출될 때 매개변수,지역변수 등을 저장한다.
  • 스택
    • 메모리의 일부를 스택으로 사용하도록 할당된 공간이다.
      • 물리적으로는 존재하지 않는다.
    • 운영체제는 각 프로그램에게 스택 공간을 할당시켜준다.
    • CPU의 SP 레지스터는 현재 CPU가 실행중인 프로그램의 스택 꼭대기에 주소를 가리킨다.
    • 스텍에 저장되는 내용 (함수일 수도 있지만 프로그램일 수도 있다.)
      • 함수의 지역변수 (함수 안)
      • 함수가 호출될 때 전달받은 매개변수 값들 (매개인자)
      • 함수가 실행된 후 돌아갈 주소
      • 함수가 의도적으로 저장해 두기 위한 값

 

 

 

더보기

CPU → 능동적 소자이다. 메모리 엑세스 시에 주소를 발생한다.

예 : 32비트 , 32비트 운영체제 등 → 32개의 주소선이 CPU에 있다는 뜻 → 액세스 할 수 있는 최대 메모리 크기는 4GB

CPU 명령은 기계명령이다.

CPU 레지스터 → PC , IR , SP , 데이터레지스터들, 상태 레지스터, 기타 여러 레지스터

명령 사이클 → CPU가 하나의 명령을 실행하는 과정. CPU는 전원이 켜진 후 명령 사이클 반복

운영체제 4공간 → 코드 공간: 코드저장 , 데이터 공간 : 변수 저장, 힙공간, 스택공간

컨텍스트 **

  • 한 프로그램이 실행 중인 일체의 상황 혹은 상황 정보
    • 메모리
      • 프로그램 코드와 데이터, 스택, 동적할당 받아 저장한 값
    • CPU 레지스터들의 값
      • PC ← 코드의 주소
      • SP ← 스택의 주소
      • 다른 레지스터는 이전의 실행결과나 현재 실행에 사용되는 데이터들
  • 축소 정의
    • 현재 CPU에 들어있는 레지스터의 값들 (메모리에 저장된 상황 정보는 그대로 있기 때문)

컨텍스트 스위칭 **

  • 발생
    • CPU가 현재 프로그램의 실행을 중지하고 다른 프로그램을 실행할 때 발생한다.
  • 과정
    • 실행중인 프로그램의 컨텍스트 → 메모리에 저장 → 새로 실행시킬 프로그램의 저장된 컨텍스트 (CPU레지스터들의 값) → CPU

 

더보기

컨텍스트 : CPU에 저장된 레지스터들의 값

컨텍스트 스위칭 : 실행중인 프로그램의 컨텍스트를 메모리에 저장 후 실행할 프로그램의 컨텍스트를 CPU 에 복귀

멀티코어 : CPU에 프로세서 두개 , 2개 프로그램 동시 실행

  Comments,     Trackbacks