※ 공부한 것을 정리한 노트입니다. 참고만 하세요. ※
1. 컴퓨터 시스템과 하드웨어
컴퓨터 시스템 계층
- 응용 프로그램층 : 사용자와 가장 가까운 계층.
- 운영체제층 : 그림처럼 사용자가 하드웨어로 직접 접근하는 것을 막는다.
- 하드웨어층
계층의 특징
- 사용자 : 응용프로그램과 GUI, 툴을 이용해 컴퓨터를 활용함
- 운영체제 : 하드웨어에 대한 배타적 독점 권한 → 사용자는 하드웨어에 직접 접근할 수 없고, 오직 운영체제를 통해 접근
∴ 운영체제는 응용프로그램과 하드웨어간의 중계를 담당한다. 그리고 사용자가 하드웨어에 대해 몰라도 컴퓨터를 사용할 수 있도록 한다.
컴퓨터 하드웨어 구성
- CPU (Central Processing Unit, 중앙 처리 장치)
- instruction 해석하여 실행
- n비트 cpu -> 접근 가능한 주소가 ~2^n - 1번지
- 메모리(오늘날 보통 DRAM)
- 실행될 프로그램이 적재되는 공간
- 캐시 (SRAM)
- 배경
- CPU 처리속도가 메모리 속도에 비해 빠르게 발전, 느린 메모리 속도에 의해 CPU 대기시간 증가
- 이를 해결하기 위해 CPU와 메모리 사이에 소량의 빠른 메모리(고가) 설치
- on-chip 캐시
- 배경
- 장치: 키보드, 프린터, 스캐너 등등...
- 버스
- 하드웨어들이 데이터 통신을 위해 디지털 신호가 지나가는 여러가닥의 전선다발
- 비유
- 컴퓨터에서의 버스 : 도로
- 컴퓨터에서의 데이터 : 자동차
- 종류
- 주소 버스
- 데이터 버스
- 제어 버스
- 주소
- 메모리, 입출력 장치, 저장 장치 내의 저장소들에 대한 번지
- 0번지부터 시작
- CPU는 메모리, 입출력 장치에 값을 쓰거나 읽을
- 목적에 따른 버스 구분
- 시스템 버스 : cpu, cache, memory 등 빠른 하드웨어들 사이의 데이터 전송. 빠름
- 입출력 버스 : 상대적으로 느린 입출력장치로 부터 데이터 전송. 느림, 일반적
- I/O contrillers & control circuit
- 입출력 장치들을 제어하기 위한 여러 하드웨어
CPU 기계 명령, Instruction
CPU 명령
- cpu가 해석하고 실행할 수 있는 기계 명령, instruction
- cpu간 instruction의 호환X. intel 아키텍처와 amd 아키텍처의 instruction은 다르다
CPU의 명령 처리 과정
- 레지스터
-
PC(Program Counter) - 다음에 실행할 명령의 메모리 주소 저장
-
IR(Instruction Register) - 현재 실행하기 위해 메모리로부터 읽어 온 명령 저장
-
SP(Stack Pointer) - 스택의 톱 메모리 주소 저장
-
-
-
기타 여러 레지스터 - 페이지 테이블이 저장된 메모리 주소를 가리키는 레지스터 등
-
- CPU는 그저 컴퓨터가 켜진 그 순간부터 instruction을 읽어와 처리할 뿐이다.
스택 영역
- 메모리의 일부를 스택으로 사용하도록 할당한 공간
- 별도의 영역이 존재하는 것이 아닌 논리적인 공간.
- sp 레지스터는 스택의 top을 가리킨다
-
함수의 지역 변수들
-
함수가 호출될 때 전달받은 매개변수 값들
-
함수가 실행된 후 돌아갈 주소
-
함수가 의도적으로 저장해 두기 위한 값
컨텍스트(Context)
- 정의: 한 프로그램이 실행 중인 일체의 상황 혹은 상황 정보
- 메모리 : code, data, heap, stack
- 레지스터 : pc, sp, 그외 레지스터들
- 축소 정의: 현재 CPU의 레지스터 값들
- 컨텍스트 스위칭
- CPU가 현재 프로그램의 실행을 중지하고 다른 프로그램을 실행할때 발생
- 현재 실행중인 프로그램의 컨텍스트(CPU레지스터들의 값)를 메모리에 저장하고 새로 실행시킬 프로그램의 저장된 컨텍스트(CPU레지스터들의 값)를 CPU에 복귀
멀티 코어 CPU
2001년 IBM에 의해 PowerPC라는 멀티코어 CPU 개발
2. 컴퓨터 시스템 계층 구조와 운영체제 인터페이스
컴퓨터 시스템 계층나눈 이유
- 계층간의 독립성 확보위해서, like 칸막이가 있다고 생각
- 사용자 : 하드웨어 지식 없어도 컴퓨터 사용 가능
- 개발자 : 복잡한 하드웨어 지식 배울 필요 없이 개발 가능
- 복잡한 하드웨어 작업은 운영체제에게 요청하여 손쉽게 해결함 → 응용 프로그램과 하드웨어간의 인터페이스
- 운영체제가 없다면(은행 예시)
- 은행 직원 없이 고객들이 스스로 한다면 계수기를 사용하려고 여기저기서 돈을 올려놓기도 하고, 금고에 접근하여 돈을 가져가기에 같은 위치의 지폐를 가지고 싸울 수도 있고, 돈을 훔치는 사람도 있을 것이다. 한마디로 무질서, chaos
- 은행 직원이 이 모든 기능을 대리 담당한다면 고객들은 해당 장치들을 다루는 기술을 알 필요 없이 직원에게 부탁하여 모든 일을 질서 있고 안전하게 처리할 수 있다.
- 프로세스 관리, 메모리 관리, 장치 관리, 파일 시스템 관리, 입출력 관리 등등...
운영체제와 응용프로그램
- 운영체제는 응용프로그램이 하드웨어를 직접 다루지 못하도록 차단 → 응용 프로그램은 오직 시스템 호출을 통해 사용
-
응용프로그램과 하드웨어 사이의 인터페이스
-
응용프로그램들의 실행 순서 제어 및 통신 중계
운영체제와 사용자
- 사용자는 하드웨어 직접 다루는 것이 아닌 응용 프로그램을 통해 사용 → 하드웨어 지식 전무해도 컴퓨터 사용 가능
- 운영체제는 컴퓨터 사용을 도와 편리하게 사용하도록 여러 인터페이스 제공
- 사용자 계정 관리, 통계 등등
운영체제와 하드웨어
- 하드웨어는 오로지 운영체제만이 관리하고 독점함
- printf("Hello") → hello를 표준 출력 스트림에 출력하도록 운영체제에게 요청할 뿐이다. 출력은 운영체제가 도맡아 함
- scanf() →역시 운영체제에게 요청할 뿐. 키보드 입력을 처리하여 입력받는다.
운영체제가 하는 일
- 프로세스와 스레드 관리
- 프로세스/스레드의 실행, 일시 중단, 종료, 스케줄링, 컨텍스트 스위칭, 동기화
- 메모리 관리
- 프로세스나 스레드에게 메모리 할당, 메모리 반환, 다른 프로세스/스레드로부터의 메모리 보호
- 메모리를 하드 디스크의 영역까지 확장하는 가상 메모리 기술
- 파일 관리 혹은 파일 시스템 관리
- 파일 생성, 저장, 읽기, 복사, 삭제, 이동, 파일 보호
- 장치 관리
- 키보드, 마우스, 프린터 등 입출력 장치, 하드 디스크 등 저장 장치 제어
- 입출력
- 사용자 인터페이스
- 라인 기반 명령 입출력 창, 마우스와 그래픽 사용 GUI 인터페이스 제공
- 네트워킹
- 네트워크 인지, 연결, 닫기, 데이터 송수신
- 보호 및 보안
- 바이러스나 해킹 등의 외부 공격이나 무단 침입으로부터 보호
운영체제 구성
- 운영체제 = 커널 + 툴 + 디바이스 드라이버
- 커널
- 운영체제의 핵심, 좁은 의미의 운영체제
- 부팅 후 메모리에 상주하는 코드와 데이터
- 운영체제의 핵심 기능
- 컴퓨터 자원 직접 제어, 관리하는 코드와 자료구조들
- 커널 코드 = 함수의 집합 = 절대 프로세스나 스레드를 가지지 않는다.
- 사용하려면 시스템 호출 사용
- 도구
- 컴퓨터를 편리하게 사용할 수 있도록 제공하는 툴 소프트웨어
- windows : 화면 GUI, 탐색기, 제어판, 작업 관리자 등등
- linux : shell, 로그인 기능
- 디바이스 드라이버
- 장치를 직접 제어하고 입출력
- 장치마다 전담 드라이버 O
- 장치 제작자가 작성하여 배포
운영체제 커널 인터페이스
- 커널이 제공하는 2개의 인터페이스
- 시스템 호출
- 커널과 응용프로그램 사이의 인터페이스
- 응용프로그램에서 커널 기능을 사용하는 유일한 방법
- 인터럽트
- 커널과 하드웨어 사이의 인터페이스
- 저장장치, 키보드, 네트워크등의 I/O 완료, 타이머 완료등을 알리는 하드웨어적 방법
- 인터럽트 발생 → Interupt Service Routine(ISR) 실행 → 인터럽트 처리 → 완료후 복귀
'대학교 > 운영체제' 카테고리의 다른 글
chap2. 컴퓨터 시스템과 운영체제 (2) (0) | 2023.04.26 |
---|---|
chap1. 운영체제의 개념과 태동, 그리고 발전 (2) | 2023.03.14 |
chap0. 운영체제 교재 정보 (0) | 2023.03.10 |