본문 바로가기

⚙️ Computer Science/명품 운영체제

Operating System - 컴퓨터 계층 구조, CPU, 캐시 메모리, 메모리, bus, CPU 레지스터, Context Switching

컴퓨터 시스템을 구성하는 계층

응용소프트웨어
운영체제
컴퓨터 하드웨어

계층 구조의 특징

  • 사용자는 응용프로그램과 GUI / 도구프로그램 (툴, 유틸리티)을 통해 컴퓨터 활용
  • 하드웨어는 모두 운영체제의 배타적 독점적 지배 받음
  • 사용자나 응용프로그램의 하드웨어에 대한 직접 접근 불허 (반드시 운영체제를 통해서만 접근이 가능)

 

컴퓨터 하드웨어 구성

 

CPU 

  • 프로그램 코드를 해석하여 실행하는 중앙처리장치
  • 컴퓨터의 가장 핵심 장치
  • 전원이 공급될 때 작동 시작, 메모리에 적재된 프로그램 실행

메모리

  • CPU에 의해 실행되는 프로그램 코드와 데이터가 적재되는 공간
  • 반도체 메모리 RAM
  • 프로그램은 실행되기 위해 반드시 메모리에 적재되어야 함

캐시메모리 (Cache Memory)

  • CPU의 프로그램 실행 속도를 높이기 위해 CPU와 메모리 사이에 소량의 빠른 메모리를 설치하게 되었음
  • 온칩(on-chip) : CPU 내부에 설치되는 캐시 
  • 옵칩(off-chip) : CPU 외부에 설치되는 캐시
  • 캐시 메모리가 있는 경우 CPU는 캐시 메모리에서만 프로그램 실행

버스 (Bus)

  • 하드웨어들이 데이터를 주고받기 위해 0과 1의 디지털 신호가 지나가는 여러 가닥의 선을 다발로 묶어 부르는 용어
  • 버스의 종류
    • 주소 버스 (address bus) : 주소 신호가 지나다니는 버스
    • 데이터 버스 (data bus) : 데이터 신호가 지나다니는 버스
    • 제어 버스 (control bus) : 제어 신호가 지나다니는 버스 
  • 주소 : 메모리, 입출력 장치나 저장 장치 내에 있는 저장소(레지스터들)에 대한 번지

목적에 따라 버스 구분

  • 시스템 버스 (System bus)
    • CPU, 캐시 메모리, 메모리 등 빠른 하드웨어들 사이에 데이터 전송
  • 입출력 버스 (I/O bus)
    • 상대적으로 느린 입출력 장치들로부터 입출력 데이터 전송

I/O controllers & control circuit

  • 입출력 제어 장치 및 시스템 제어 회로
  • 입출력 장치들을 제어하기 위한 여러 하드웨어 

 

CPU

능동적 소자. 메모리 액세스 시 주소 발생

32비트 CPU, 32비트 운영체제, 32비트 컴퓨터의 차이?

  • CPU의 액세스 범위 : 2^32개의 서로 다른 주소 (0~2^32-1번지)
  • CPU가 최대 액세스할 수 있는 메모리의 크기 : 4GB
  • 한 번지의 공간이 1바이트이므로, 2^32개의 주소 == 2^32 바이트 == 4GB
  • 32비트 CPU를 가진 컴퓨터에 4GB이상 메모리를 설치할 경우 → 4GB를 넘은 영역은 사용할 수 없음

 

CPU 명령

  • C언어나 자바의 프로그램 소스 코드와 다름
  • CPU를 설계하는 기업이 명령어들, 명령어 개수, 형태 등을 결정
  • CPU마다 명령 이름, 기계어 코드, 크기, 개수 등이 다름
  • 명령들의 호환성이 없다. 
mov ecx, 51		;b9 33 00 00 00		//ecx레지스터에 51저장
add ax, 8		;83 c4 09		//ax레지스터에 8 더하기 
push ebp		;55			//ebp레지스터의 값을 스택에 저장
call _printf		;e8 00 00 00 00		//_printf 함수 호출
ret 0			;c3			//이 함수를 호출한 곳으로 리턴(0값과 함께)

 

 

CPU 레지스터들 

  • PC(Program Counter) - 다음에 실행할 명령의 메모리 주소 저장
  • IR(Instruction Register) - 현재 실행하기 위해 메모리로부터 읽어 온 명령 저장
  • SP(Stack Pointer) - 스택의 top 메모리 주소 저장
  • 데이터 레지스터들(Data registers) -연산에 사용되거나 사용될 데이터들 저장
  • 상태 레지스터(Status reguster) - CPU의 상태 정보나 인터럽트 금지 등의 제어 정보 저장 

 

 

CPU가 명령을 실행하는 과정

 

프로그램이 실행되기 위해 운영체제에 의해 할당되는 4개의 공간

  1. 코드 공간 (code) : 프로그램 코드 적재
  2. 데이터 공간 (data) : 전역 변수들이 적재되는 공간
  3. 힙 공간 (heap) : 프로그램에서 동적 할당받는 공간
  4. 스택 공간 (stack) : 함수가 호출될 때 매개변수, 지역변수 등 저장 

스택에 저장되는 내용 : 지역 변수들, 매개변수 값들, 돌아갈 주소, 의도적으로 저장해 두기 위한 값 

 

컨텍스트 (Context) 

프로그램이 실행 중인 일체의 상황 혹은 상황 정보

  • 메모리 
    • 프로그램 코드와 데이터, 스택, 동적할당 받아 저장한 값
  • CPU 레지스터들의 값
    • PC에는 코드의 주소
    • SP에는 스택의 주소
    • 다른 레지스터는 이전의 실행 결과나 현재 실행에 사용되는 데이터

 

컨텍스트 스위칭 (Context Switching)

현재 실행중인 프로그램의 컨텍스트를 메모리에 저장 / 새로 실행시킬 프로그램의 저장된 컨텍스트를 CPU에 복귀

 

프로그램 A에서 프로그램 B로 컨텍스트 스위칭

 

728x90