728x90
운영체제의 수행 과정
컴퓨터 시스템의 Memory : ROM 과 RAM
memory의 첫 부분은 ROM(비 휘발성) , 뒷 부분은 RAM(휘발성)
ROM의 시작 위치에 부트로더(boot Loader) 프로그램 저장.
전원이 켜지면 CPU(프로세서)는 메모리 첫 부분(ROM)의 내용을 읽어 수행하게 되는데, 부트로더를 수행하게 됨.
- 전원이 켜지면 pc 레지스터 값이 0으로 초기화 됨
- 메모리 0번지를 읽어 수행함. 즉 부트로더가 실행 됨
- 전원이 켜지면 CPU 모드는 커널모드로 초기화 됨( 상태 레지스터의 모드 비트가 0으로 초기화 됨)
- 부트로드는 커널 모드에서 실행됨
- 0: 커널모드 1: 사용자 모드
부트로더가 하는 일
커널 모드
- 시스템 초기화 및 테스트( 메모리, 기본 입출력 장치 등)
- 운영체제(OS) 파일을 보조기억장치(하드디스크) 에서 읽어 들여 메모리(RAM)에 적재(load)하고 실행을 시작시킨다.
- 시스템 초기화
- 최초의 프로그램을 시작시킴(Unix경우 init 프로그램)
운영체제는 인터럽트에 의해 CPU제어를 받아서 수행됨(운영체제는 인터럽트에 의해서만 구동되는 프로그램)->인터럽트 벡터 테이블을 초기화 해야함
- 타이머 인터럽트: 주기적으로 인터럽트를 발생시킴
- 응용 프로그램: 시스템 호출을 수행
- I/O 장치: 입출력을 마치면 인터럽트를 발생시킴
인터럽트에 의해 운영체제가 수행될 때, CPU모드는 자동으로 커널모드가 됨
운영체제는 항상 커널모드에서 수행되며, 인터럽트 서비스 루틴을 수행
- CPU레지스터들의 값을 저장한다
- 인터럽트를 한다
- 저장한 CPU 레지스터값들을 복원하여 인터럽트 발생 직전으로 CPU제어를 넘긴다.
왜 운영체제는 항상 커널모드에서 수행이 될까?
보안과 시스템 안정성을 유지하기 위해서이다.
부팅할 때 커널모드에서 시작하므로 운영체제는 커널 모드에서 수행되며 이후 인터럽트가 발생하면 하드웨어적으로 CPU모드가 커널 모드로 설정되어 운영체제가 수행되기 때문에
CPU모드 : OS가 자신을 보호하고 시스템 구성요소를 보호할 수 있게 함
- 사용자모드와 커널모드
- 특정 명령어는 커널모드에서만 실행
시스템 호출(System call)
시스템 호출: 운영체제가 응용 프로그램에게 제공하는 시스템 함수
응용 프로그램은 마치 함수를 호출하듯 호출하여 사용할 수 있다.
응용 프로그램은 직접 하드웨어를 제어하거나 파일(하드디스크에 있다)을 읽기/쓰기를 할 수 없다.
운영체제에 의해 제공되는 일반적인 시스템 호출들
- 프로세스 제어
- 종료(terminate), 적재(load), 실행(execute)
- 프로세스 속성 획득(get attribute), 속성 설정(set attribute)
- 지정된 시간만큼 대기(wait time)
- 사건이 일어나기를 대기(wait event)
- 사건이 일어났음을 신호(signal event)
- 기억장치 할당 및 해제
- 파일 조작
- 생성, 삭제, 개방, 폐쇄
- 읽기, 쓰기, 재배치
- 속성 획득 및 설정
- 장치 관리
- 장치 요구(request), 해제(release)
- 읽기, 쓰기, 재배치
- 속성 획득 및 설정
- 장치의 논리적 부착 또는 제거
- 정보 유지관리
- 시간과 날짜의 설정과 획득
- 시스템 자료의 설정과 획득
- 프로세스, 파일, 장치 속성의 설정과 획득
- 통신
- 통신연결의 생성과 제거
- 메시지 송수신
- 상태 정보 전달
사용자 인터페이스
사용자 인터페이스 : CLI
- 키보드를 사용하여 직접 명령어를 입력
- 일반적으로 별도의 프로그램으로 구현되어 수행됨
사용자 인터페이스 : GUI
- 마우스, 키보드 등을 사용
- 파일,프로그램, 행위 등을 아이콘으로 나타냄
- 인터페이서 객체에 대한 다양한 마우스 버튼은 여러가지 행위로 수행한다
대부분의 운영체제는 CLI + GUI 제공
운영체제의 요구사항 : 사용자 목적(User goals)과 시스템 목적(System goals)
- 사용자 목적: 운영체제는 사용이 쉽고 배우기 쉽고 신뢰성이 있어야하고 안전해야하고 빠르게 실행되어야한다.
- 시스템 목적: 운영체제는 설계, 구현, 관리가 쉬워야하고 융통성, 신뢰성, 효율성이 있어야한다.
단일 커널 구조
운영체제의 모든 기능이 한 프로그램으로 구현됨
Unix
파일 시스템, CPU스케쥴링, 메모리 관리가 하나의 프로그램으로 구현
문제점:
1. 보안
2.스케일링 제한
3. 유지보수 어려움
마이크로 커널
중요한 기능 : 커널로 구현
나머지 기능: 사용자 모듈인 서버로 구현 -> 응용프로그램처럼 실행
커널과 사용자 모듈 서버는 메시지를 사용하여 통신
장점
- 확장이 쉽다 = 새로운 하드웨어에 이식이 쉽다.
- 커널모드에서 실행되는 코드가 적어짐->신뢰성이 좋아진다
문제점
- 사용자 공간과 커널 공간의 잦은 통신이 필요하기 때문에 성능이 떨어질 수 있다.
모듈을 지원하는 구조
- 운영체제가 커널과 모듈로 분리되는 구조
- 커널(주요 기능)은 프로세스, 메모리 관리 등 핵심 서비스만 구현
- 하드웨어 드라이버, 파일 시스템등 추가 기능은 모듈(커널안에 동적으로 집어넣음)로 구현
- 모듈은 부팅할 때 또는 컴퓨터 사용 중에 커널에 링크할 수 있음
- 컴퓨터 사용중에 모듈을 커널 메모리에서 제거할 수 있음
- 각 모듈은 잘 정의된 인터페이스를 사용해 커널과 통신
EX) Linux, Mac OS 등
728x90