컴퓨터시스템과 운영체제

조준형·2023년 4월 14일
0

컴퓨터 시스템과 하드웨어

컴퓨터 시스템의 범위

컴퓨터 시스템의 계층

  • 응용프로그램 층
  • 운영체제 층
  • 컴퓨터 하드웨어 층

컴퓨터 시스템 계층 구조의 특징

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

계층 구조에서 보는 운영체제의 기능

  • 사용자가 하드웨어에 대해 몰라도 컴퓨터를 사용할 수 있도록 함
  • 응용프로그램과 하드웨어 사이의 중계자 역

컴퓨터 하드웨어 구성

CPU

  • 프로그램 코드, 기계 명령을 해석하여 실행하는 중앙처리장치
  • 컴퓨터의 가장 핵심 장치
  • 메모리에 적재된 프로그램을 가져와서 명령어들을 실행함

메모리

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

캐시 메모리

  • 배경
    : CPU 처리속도가 메모리 속도에 비해 빠르게 향상 -> CPU는 느린 메모리 떄문에 대기시간 늘게 됨
    : CPU의 프로그램 실행속도는 높이기 위해, CPU와 메모리 사이에 설치되는 소량의 빠른 메모리, 고가의 메모리
  • 온칩 캐시: CPU 내부에 설치되는 캐시
  • 오프칩 캐시: CPU 외부에 설치되는 캐시
  • 캐시 메모리가 있는 경우 CPU는 캐시 메모리에서만 프로그램 실행
    : 실행하고자하는 프로그램과 데이터는 먼저 메모리에서 캐시로 옮겨져야함

장치들

  • 키보드, 프린터, 스캐너 등

버스

  • 하드웨어들이 데이터를 주고받기 위해 0과 1의 디지털 신호가 지나가는 여러 가닥의 선을 다발로 묶어 부르는 용어
  • 버스의 종류
    : 주소 버스 - 주소 신호가 지나다니는 버스
    : 데이터 버스 - 데이터 신호가 지나다니는 버스
    : 제어 버스 - 제어 신호가 지나다니는 버스

주소

  • 메모리나 입출력 장치나 저장 장치내에 있는 저장소(레지스터들)에 대한 번지

  • 가장 작은 번지는 0번지이고 그 외는 양의 정수

  • 주소 버스는 주소 값이 전달되는 여러 선의 다발을 부름

  • CPU는 메모리나 입출력 장치에 값을 쓰거나 읽을 때 반느딧 주소를 발생시킴

버스는 목적에 따라 구분

  • 시스템 버스
    : CPU, 캐시 메모리, 메모리 등 빠른 하드웨어들 사이에 신호 전송
    : 고속도로에 비유

  • 입출력 버스
    : 상대적으로 느린 입출력 장치들로부터 입출력 데이터 전송
    : 일반도로에 비유

입출력 제어 장치 및 시스템 제어 회로

  • 입출력 장치들을 제어하기 위한 여러 하드웨어 회로들로 구성되며, 아래 내용을 수행함
    : 입출력 장치에게 명령을 하달
    : 메모리와 입출력 장치 사이에 혹은 CPU와 입출력 장치 사이에 데이터가 전달 중계
    : DMAC - I/O 장치와 메모리 사이 데이터 전송을 CPU 개입 없이 직접 전송하는 장치
    : 인터럽트 제어장치: I/O 장치들이 입출력을 완료하였을 경우 발생하는 인터럽트를 CPU에게 전달하는 기능을 가진 장치

현대 컴퓨터 시스템의 구성

NorthBridge: 메모리 액세스 양이 많고 메모리와 빠르게 정보를 주고 받아야 하는 하드웨어들을 연결하는 허브 역할

  • NorthBridge는 빠른 정보를 주고 받기 위해 메모리 제어 허브라고도함
  • 다음으로 메모리와 데이터 전송량이 많은 그래픽 제어 장치도 NorthBridge에 연결되어 있음

SouthBridge: 입출력 장치들을 제어하는 모든 회로를 가지고 있는 통합 칩

  • SouthBridge는 여러 종류, 여러 개의 입출력 버스를 통제하여 입출력 버스에 연결된 다양한 디바이스들의 저장장치들을 제어하고 관리함

CPU와 메모리의 관계

CPU

  • 능동적 소자. 메모리 액세스 시 주소 발생
  • 32비트 CPU, 32비트 운영체제, 32비트 컴퓨터
    : CPU에 32개의 주소선
    : CPU가 액세스하는 주소 범위: 0 ~ 2^32-1번지
    : CPU가 최대 액세스할 수 있는 메모리의 크기: 4GB
    : 한 번지의 저장공간이 1바이트이므로, 2^32바이트 = 4GB
    : 32비트 CPU를 가진 컴퓨터에 4GB이상 메모리를 달아도 소용 없음
    :CPU에 입출력되는 32개의 데이터 선
    -> 한번에 32비트 읽고 쓰기 가능(32비트는 4개의 주소)

1.4 CPU 기계 명령

명령

  • CPU가 해석하고 실행할 수 있는 기계 명령
  • CPU 마다 명령 이름, 기계어 코드, 크기, 개수 등이 다

명령 처리 과정

CPU 레지스터들

  • PC: 다음에 실행할 명령의 메모리 주소 저장
  • IR: 현재 실행하기 위해 메모리로부터 읽어 온 명령 저장
  • SP: 스택의 톱 메모리 주소 저장
  • 데이터 레지스터들: 연산에 사용될 데이터들을 저장
  • 상태 레지스터: CPU의 상태 정보나 입터럽트 금지 등의 제어 정보 저장
  • 기타 여러 레지스터: 페이지 테이블이 저장된 메모리 주소를 가리키는 레지스터

명령어 사이클

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

명령 사이클 사례: 메모리 100번지에 저장된 다음 명령을 실행하는 사례
1. CPU는 PC 레지스터가 가리키는 주소(100)을 주소 버스에 싣는다.
2. 메모리는 100번지에 저장된 데이터(mov eax, [300])를 데이터 버스에 싣는다.
3. CPU는 데이터 버스에 담긴 명령어를 IR 레지스터 저장 및 디코드. PC는 다음 번지로 수정
4. CPU는 연산에 필요한 데이터를 읽기 위해 데이터의 주소를 주소 버스에 싣는다.
5. 메모리는 300번지에 저장된 50을 데이터 버스에 싣는다.
6. CPU는 데이터 버스로부터 50을 임시 데이터 레지스터에 저장된다.
7. 이제 CPU는 명령을 해석하고 명령 실행한다. 명령 실행 결과, 50이 eax 레지스터에 저장한다.

스택은 어디에 있는가?

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

  • 코드 공간: 프로그램 코드 적재
  • 데이터 공간: 전역 변수들이 적재되는 공간
  • 힙 공간: 프로그램 동적으로 저장할 데이터를 위한 공간
  • 스택 공간 : 함수가 호출될 때 매개변수, 지역변수 등 저장

스택

  • 스택이라는 별도의 하드웨어 메모리가 있는 것 아님
  • 메모리의 일부를 스택으로 사용하도록 할당된 공간
  • 각 프로그램에게 자신만의 스택 공간 할당
  • CPU의 SP 레지스터가 현재 프로그램의 스택 꼭대기 주소를 가리킴
  • 스택에 저장되는 내용
    : 함수의 지역 변수들, 함수가 호출될때 전달 받은 매개변수 값들, 함수를 실행한 후 돌아갈 주소, 함수 코드가 의도적으로 저장해 두기 위한

컨텍스트

컨텍스트

  • 프로그램이 실행중인 일체의 상황 혹은 상황 정보
    : 메모리 - 프로그램 코드와 데이터, 스택, 동적할당 받아 저장한 값
    : CPU 레지스터들의 값 - pc에는 코드의 주소 sp에는 스택의 주소 다른 레지스터는 이전의 실행 결과나 현재 실행에 사용될 데이터들

  • 축소 정의
    : 현재 CPU에 들어있는 레지스터의 값들 - 메모리에 저장된 상황 정보를 그대로 있으니까

컨텍스트 스위칭

  • 정의
    : 현재 실행중인 프로그램의 컨텍스트(CPU 레지스터들의 값)를 저장
    : 다른 프로그램의 저장된 컨텍스트(CPU 레지스터들의 값)를 CPU에 복귀

  • 발생
    : CPU가 현재 프로그램 실행을 중지하고 다른 프로그램을 실행할때

멀티코어 CPU

2001년 IBM에 의해 PowerPC라는 멀티코어 CPU 개발

  • CPU 내부에 2개의 프로세서 포함
  • 2개의 프로그램을 동시에 실행
  • 코어는 완벽한 처리기, 과거 개념의 CPU

컴퓨터 시스템 계층 구조

계층간 독립성 확보를 위해

사용자

  • 운영체제나 하드웨어에 대해 몰라도 응용프로그램으로 컴퓨터 활용

응용프로그램

  • 컴퓨터 하드웨어의 타입이나 구조, 제어 방법을 몰라도 개발 가능
  • 운영체제에게 요청하여 해결
  • 컴퓨터 하드웨어가 바뀌어도 응용프로그램을 다시 작성할 필요 없음

운영체제

  • 운영체제는 장치 관련된 모든 작업을 디바이스 드라이버에게 요청
  • 응용프로그램과 하드웨어 사이의 인터페이스

왜 운영체제가 필요한가?

운영체제가 없다면

  • 응용프로그램이나 사용자가 직접 하드웨어를 제어해야 함
  • 하드웨어에 대한 지식, 충돌, 관리, 보안의 문제 발생

운영체제의 필요성

  • 자원에 대한 충돌 해결, 성능 최적화, 사용자의 시스템 사용의 효율화

운영체제와 응용프로그램사이의 관계

응용프로그램

  • 워드, 웹 브라우저 등 사용자가 컴퓨터를 활용하도록 작성된 다양한 프로그램들

응용프로그램에 대한 운영체제의 역할

  • 응용프로그램이 직접 하드웨어를 다루지 못하도록 차단
    이유: 응용프로그램들 사이의 하드웨어 사용 충돌을 막기 위함
  • 응용프로그램은 하드웨어를 사용하고자 할 때
    : 반드시 운영체제에게 요청 -> 운영체제가 대신하여 하드웨어 조작
    :유일한 요청 방법 - 시스템 호출
  • 응용프로그램과 하드웨어 사이의 인터페이스
  • 응용프로그램들의 실행 순서 제어
  • 응용프로그램들 사이의 통신 중계

운영체제와 사용자의 관계

사용자는 응용프로그램을 통해 컴퓨터 활용

  • 탐색기, 메모장 등

사용자에 대한 운영체제의 역할

  • 사용자가 하드웨어에 관한 지식이 없어도 컴퓨터를 사용하기 쉽도록 지원
  • 사용자가 하드웨어를 설치하거나 변경하는 것에 도움
  • 사용자에게 컴퓨터 시스템을 사용할 편리한 인터페이스 제공
    : UI, 마우스, 음성 명령 등
  • 컴퓨터의 사용을 돕는 여러 도구 응용프로그램(유틸리티) 제공
    : Window의 탐색기와 작업 관리자
    : 리눅스의 쉘
  • 사용자 계정 관리
  • 사용자의 컴퓨터 사용 시간 계산, 과금 처리

하드웨어를 제어하는 것은 전적으로 운영체제의 몫

  • 응용프로그램에서 printf("hello")
    : 디스플레이 장치에 "hello"를 출력하는 일을 운영체제가 함
  • 응용프로그램에서 scanf()
    : 운영체제가 함

운영체제

  • 사용자/응용프로그램과 하드웨어 사이의 매개체
  • 하드웨어 제어는 전적으로 운영체제의 기능

운영체제의 전체 기능

  • 프로세스와 스레드 관리
  • 메모리 관리
  • 파일 관리 혹은 파일 시스템 관리
  • 장치 관리
  • 사용자 인터페이스
  • 네트워킹
  • 보호 및 보안

운영체제의 구성 요소와 커널

운영체제 구성

운영체제 = 커널 + 도구 + 디바이스 드라이버

  • 커널
    : 운영체제의 핵심 부분, 좁은 의미의 운영체제
    : 부팅 후 메모리에 상주하는 코드와 데이터
    -> 운영체제의 핵심 기능 모두 실행
    -> CPU, Memory, MMu 등 컴퓨터의 자원 직접 제어, 관리하는 코드와 자료구조 들
    : 커널 코드는 함수들의 집합의 구성
    : 커널 기능을 이용하려면 응용프로그램은 반드시 시스템 호출을 사용

  • 도구 소프트웨어와 GUI
    : 사용자가 컴퓨터를 편리하게 사용할 수 있도록 제공하는 툴 소프트웨어 혹은 툴 응용프로그램
    -> 작업 관리자, 제어판

  • 디바이스 드라이버
    : 장치를 직접 제어하고 입출력하는 소프트웨어
    : 장치마다 전담 드라이버 있음
    : 일반적으로 장치 제작자에 의해 작성되고 배포
    -> 키보드 드라이버, 디스크 드라이버

운영체제 커널 인터페이스

커널이 제공하는 2개 인터페이스: 시스템 호출과 인터럽트

  • 하드웨어와 응용프로그램의 중계 역할

    시스템 호출

  • 커널과 응용프로그램 사이의 인터페이스

  • 응용프로그램에서 커널 기능을 사용할 수 있는 유일한 방법
    : 시스템 호출 라이브러리를 통해 다양한 시스템 호출 함수 제공 ex) 파일 읽기 open()

    인터럽트

  • 커널과 하드웨어 장치 사이의 인터페이스

  • 장치들이 입출력 완료, 타이머 완료 등을 CPU에게 알리는 하드웨어적 방법

  • CPU는 하는 일을 중단하고 인터럽트 서비스 루틴 실행
    : 인터럽트 서비스 루틴은 커널이 적재된 메모리 영역에 있는 코드
    : 인터럽트 서비스 루틴은 일반적으로 디바이스 드라이버 내에 있음
    : 인터럽트 서비스 루틴의 실행을 마치면 하던 작업 계속

  • 인터럽트 활용
    : 운영체제가 장치에게 지시한 입출력 작업의 완료, 예고 없는 네트워크 데이터의 도착, 키보드나 마우스의 입력, 부족한 배터리의 경고 등 장치와 관련된 모든 이벤트 처리

profile
코린이

0개의 댓글