[운영체제] 운영체제 구조

.·2021년 7월 2일
1

운영체제

목록 보기
2/6

목표

  • 운영체제가 제공하는 서비스를 식별
  • 시스템 콜을 사용하는 방법 설명
  • 운영체제의 다양한 구조를 설명

운영체제 서비스

  • 운영체제는 프로그램 실행 환경을 제공

사용자 인터페이스

  • 대부분의 운영체제가 UI를 지님 주로 CLI,GUI 사용

프로그램 수행

  • 시스템은 프로그램을 메모리에 적재해 실행 할 수 있어야 함
  • 프로그램이 정상적이든 비정상적이든 실행을 끝낼 수 있어야 함

입출력 연산

  • 실행 중인 프로그램은 입출력을 요구할 수 있음, 파일, 입출력 장치가 연관

파일 시스템 조작

  • 프로그램은 파일,폴더를 읽고 쓰거나 만들고 지울 수 있음
  • 권한 설정, 검색, 파일 정보를 열거 가능

통신

  • 같은 호스트 내 또는 다른 호스트 내의 프로세스들이 정보를 교환 가능
  • 공유메모리 또는 메세지 전달을 통해 이루어짐

오류 탐지

  • 운영체제는 가능한 모든 오류를 의식해야 함
  • CPU,메모리,입출력장치, 사용자 프로그램에서 발생 가능
  • 각 오류에 대해 OS는 적절한 조치를 취해야 함

자원 할당

  • 다수의 프로세스나 작업이 동시에 실행될 때 그들 각각에 자원을 할당
  • 여러가지 다른 종류의 자원을 관리
  • CPU 사이클, 메인 메모리, 파일 저장장치들은 특수한 할당 코드를 지님
  • 입출력 장치들은 일반적인 요청과 방출 코드를 지님

기록 작성(logging)

  • 어떤 프로그램이 어떤 종류의 컴퓨터 자원을 얼마나 많이 사용하는지 추적

보호, 보안

  • 네트워크로 연결된 컴퓨터에 저장된 정보의 소유자는 그 정보의 사용을 통제하길 원함
  • 보호 : 시스템 자원에 대한 모든 접근이 통제되도록 보장
  • 보안 : 외부 입출력 장치들을 부적합한 접근 시도로부터 지키고 침입의 탐지를 위해 모든 접속을 기록
  • 각 사용자가 자원에 대한 접근을 원할 때 통상 패스워를 사용해서 시스템에게 자신을 인증

사용자와 운영체제 인터페이스

  • 대부분의 OS가 CLI와 GUI를 동시에 지님

명령 인터프리터

  • CLI : Command Line Intepreter
  • 명령인터프리터를 제공하는 서비스에서 해석기를 셸이라 부름
  • 사용자가 지정한 명령을 가져와서 그것을 수행
  • 명령어들은 두가지 방식으로 구현
  • 명령 인터프리터 자체가 명령을 실행항 코드를 지님
  • 시스템 프로그램에 의해 대부분의 명령을 구현
  • Ex) rm file.txt
  • rm이라는 파일을 찾아서 그 파일을 메모리에 적재하고 그것을 매개변수 file.txt로 수행

그래픽 기반 사용자 인터페이스

  • GUI : Graphic User Interface
  • 사용자에게 친화적인 인터페이스
  • 마우스, 키보드, 모니터, 아이콘등을 사용

시스템 콜

  • 시스템 콜 : OS에 의해 제공되는 서비스에 대한 인터페이스 제공
  • 주로 C와 C++ 언어로 작성 됨
  • 대부분의 응용 개발자들은 직접 시스템 콜을 사용하기보다 API에 따라 프로그램을 설계

API

  • 가장 많이 사용되는 API : Win32 API, POSIX API, JAVA API
  • API 사용 이유 : 프로그램 호환성, 실행이 쉬움

시스템 콜 인터페이스

  • 실행시간 환경(RTE)는 시스템 콜 인터페이스를 제공
  • 시스템 콜 인터페이스는 API 함수의 호출을 가로채어 필요한 운영체제 시스템 콜을 호출
  • 각 시스템 콜에는 번호가 할당되고 이 번호에 따라 색인되는 테이블이 유지
  • 시스템 콜 인터페이스는 의도하는 시스템 콜을 부르고 시스템 콜의 상태와 반환값을 돌려줌
  • 호출자는 시스템 콜이 어떻게 구현되고 실행 중 무슨 작업을 하는지 모름
  • API를 준수하고 시스템 콜의 결과로서 운영체제가 무엇을 할 것인지만 이해
  • 운영체제 인터페이스의 자세한 부분은 API에 의해 프로그래머에게 숨겨짐

시스템 콜의 매개변수 전달

  • 3가지 방법이 존재 : 레지스터, 블록, 스택
  • 매개변수를 레지스터 내에 전달
  • 메모리 내의 블록이나 테이블에 저장된 후 주소를 전달
  • 매개 변수는 프로그램에 의해 스택에 넣어질 수 있고 운영체제에 의해 꺼내짐
  • 블록, 스택 방법은 전달되는 매개변수들의 개수나 길이를 제한 X

시스템 콜의 유형

  • 프로세스 제어
  • 파일 조작
  • 장치 관리
  • 정보 유지
  • 통신
  • 보호

시스템 서비스

  • 하드웨어 -> 운영체제 -> 시스템 서비스 -> 응용 프로그램
  • 시스템 서비스는 프로그램 개발과 실행을 위한 환경을 제공
  • 다음과 같은 범주로 구분이 가능

파일 관리

  • 파일과 디렉토리를 생성, 삭제, 복사, 개명, 인쇄, 열거, 조작

상태 정보

  • 단순히 시스템에 날짜, 시간, 사용 가능한 메모리, 디스크 공간, 사용자 수 같은 정보를 물음
  • 복잡한 프로그램은 상세한 성능, 로깅, 디버깅 정보 제공
  • 정보를 단말기나 다른 출력 장치 혹은 파일로 포맷하여 인쇄
  • 몇몇 시스템은 환경 설정 정보를 저장하고 검색할 수 있는 등록 기능 제공

파일 변경

  • 텍스트 에디터를 통해 파일을 내용을 생성하고 변경할 수 있음
  • 특수한 명령어를 통해 파일 변경 가능

프로그래밍언어지원

  • 컴파일러, 어셈블러, 디버거 및 해석기가 운영체제와 같이 제공되거나 별도로 다운 받을 수 있음

프로그램 적재와 수행

  • 절대 로더, 재배치 가능 로더, 링키지 에디터, 중첩 로더 제공

통신

  • 프로세스, 유저, 컴퓨터 시스템들 사이에 가상 접속을 이루기 위한 기법 제공

백그라운드 서비스

  • 모든 범용 시스템은 부트할 때 특정 시스템 프로그램을 시작

링커와 로더

  • 일반적으로 프로그램은 디스크에 이진 실행 파일로 존재
  • CPU에서 실행하려면 프로그램을 메모리로 가져와 프로세스 형태로 배치 해야 함

프로그램 생성 및 실행 순서

  • 컴파일러 : 파일을 컴파일 해 물리 오브젝트 파일로 만듬
  • 링커 : 재배치 가능 오브젝트 파일을 하나의 이진 실행 파일로 결합
  • 로더 : 이진 실행 파일을 메모리에 적재

UNIX 시스템 예시

  • 명령어 라인에 프로그램 이름 입력
  • fork() 시스템 콜을 사용해 새 프로세스 생성
  • exec() 시스템 콜로 로더 호출 후 exec()에 실행파일 이름 전달
  • 로더는 새로 생성된 프로세스 주소 공간을 사용하여 지정된 프로그램을 메모리에 적재

운영체제 구조

모놀리식 구조

  • 구조가 없음
  • 커널의 모든 기능을 단일 주소 공간에서 실행되는 단일 정적 이진 파일에 넣음
  • 단순하지만 구현 및 확장이 어려움
  • 성능 면에서 이점 : 시스템 콜 인터페이스에 오버헤드가 없고 커널 안에서 통신 속도가 빠름

계층적 접근

  • 운영체제가 여러 개의 층으로 나누어짐
  • 최하위층은 하드웨어 최상위 층은 사용자 인터페이스
  • 운영체제 층은 자료구조와 상위층에서 호출할 수 있는 루틴의 집합으로 구성
  • 장점 : 구현과 디버깅의 간편함, 디자인과 실행이 간편, 각 층만 신경쓰면 됨
  • 단점 : 각 계층의 기능을 적절히 정의 해야 함, 계층화로 인한 오버헤드

모듈

  • 가장 최근 기술로 적재가능 커널 모듈 기법이라 불림
  • 커널은 핵심 서비스를 제공하고 다른 서비스들은 커널이 실행되는 동안 동적으로 구현
  • 각 핵심 모듈은 분리되어 있으나 모듈에서 임의의 다른 모듈을 호출 가능
  • 계층 구조와 비슷하나 더 유연함

가상머신

  • 가상머신은 단일 컴퓨터의 하드웨어를 여러가지 실행 환경으로 추상화
  • 호스트 : 가상 머신을 실행하는 기본 하드웨어 시스템
  • 게스트 : 호스트의 가상 복사본이 제공
  • 가상머신관리자 : 가상 머신을 생성하고 실행

요약

  • 운영체제는 사용자 및 프로그램에 서비스를 제공하여 프로그램 실행 환경을 제공
  • 유저 인터페이스의 3가지 종류 : CLI, GUI, Batch(터치 스크린)
  • 시스템 콜은 운영체제에서 제공하는 서비스에 대한 인터페이스 제공
  • 프로그래머는 시스템 콜 서비스에 접근하기 위해 API 사용
  • 시스템 콜은 프로세스가 OS에 요청을 만들 수 있도록 해줌
  • 시스템콜의 매개변수 전달 방법 : 레지스터, 블록, 스택
  • OS 구조 : 모놀리식, 계층화, 마이크로커널, 모듈
profile
지금부터 공부하고 개발한것들을 꾸준하게 기록하자.

0개의 댓글

관련 채용 정보