2 분 소요

4. 시스템 호출의 유형

시스템 호출의 중요 범주

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

프로세스 제어

  • 프로세스 생성/적재/실행/종료, 중지
  • 프로세스 속성 읽기/설정, 메모리 할당/반납
  • 시간 대기. 사건 대기. 사건 알림

파일 관리

  • 파일 생성, 삭제, 열기, 닫기, 읽기, 쓰기, 위치변경
  • 파일 속성 읽기/설정

장치 관리

  • 장치 요구(request)/반납(release)/읽기/쓰기/위치 변경
  • 장치 속성 읽기/설정, 논리적 부착(attach)/분리(detach)

정보 유지보수

  • 시간, 날짜, 시스템 데이터, 프로세스/파일/장치 속성

통신

  • 통신 연결 생성/삭제
  • 메시지 송신, 수신, 상태 정보 전달
  • 원격 장치 부착(attach)/분리(detach)

보호

  • 역사적으로 다중 사용자/다중 프로그램 환경에서 고려됨
  • 네트워크와 인터넷 연결로 모든 컴퓨터 시스템에서 보호를 고려해야 함
  • 자원 접근 제어 – 허가권 설정

Windows와 Unix 시스템 호출 예

image

single-tasking 시스템 : MS-DOS

한번에 하나의 프로그램만 사용 가능

image

TSR(terminate and stay resident) MS-DOS system call – hooks an interrupt

single-tasking 시스템 : Arduino

Arduino 실행 : OS 없음

image

multi-tasking 시스템 : UNIX/Linux

  • 셸이 다른 프로그램이 실행되는 동안 계속하여 수행 가능 → 후면 처리(background processing)
  • 여러 개의 작업을 동시에 처리 가능
  • fork() 와 exec() 시스템 호출 사용하여 구현

image

5. 시스템 프로그램

프로그램 개발과 실행을 위해 편리한 환경을 제공하는 프로그램

  • 파일관리, 상태 정보, 파일변경, 프로그래밍 언어 지원, 프로그램 적재/실행, 통신

응용 프로그램

일반적인 문제 해결이나 연산 처리에 유용한 프로그램

운영체제에 대한 대부분의 사용자의 관점은 system call이라기 보다는 시스템 프로그램과 응용 프로그램에 의해 정의됨

6. 운영체제의 설계와 구현

설계 목표와 명세 정의

하드웨어와 시스템 유형의 선택에 영향 받음

요구조건 지정(설계 목표)

  • 사용자 목표 - 사용하기 쉽고, 배우기 쉽고, 신뢰성 있고, 안전하고, 빠름
  • 시스템 목표 - 설계, 구현, 유지 보수가 쉽고, 유연성, 신뢰성, 무오류, 효율적
  • 요구조건은 애매하고 다양하게 해석될 수 있으며, 일반적으로 합의된 유일한 해법은 없음

모든 요구 조건을 해결하는 완전한 해결책은 없지만, 다양한 요구 조건에 대한 성공이 입증된 다양한 접근법은 있다.

기법(Mechanism)과 정책(Policy)

Mechanism: 어떻게 할 것인가? (How)

  • mechanism은 정책 변경에 민감하지 않는 일반적인 것이 바람직함 Policy: 틀 안에서 무엇을 할 것인가? (What)
  • policy는 시간이 지남에 따라서 변경될 수 있음.

CPU 보호 방법

  • mechanism : CPU 보호를 위하여 타이머 구조를 사용 → 바뀌지 않는 것
  • policy : 특정 사용자를 위한 타이머 양을 결정하는 것 → 변경 가능

Mechanism과 Policy의 분리는 flexibility(유연성)를 위해서 중요함

시스템 매개 변수의 재정의에 의해서 policy변경이 이루어지도록 함

  • UNIX 초기 : 시분할 스케줄러
  • Solaris 최근 버전 : loadable table에 의해 제어되는 스케줄러 microkernel 기반 OS – mechanism과 policy의 극단적 분리 Mac OS와 Windows – mechanism과 policy를 함께 작성됨
  • interface가 kernel과 system library에 포함 ➔ global look and feel

구현(Implementation)

운영체제의 구현

  • 초기의 운영체제는 어셈블리 언어로 작성됨
  • 현재의 대부분의 운영체제는 고급 언어로 작성됨
  • 커널의 저수준 코드는 여전히 어셈블리 언어로 작성됨

system porgrams의 구현

  • C, C++, interpreted languages (Perl, Python, shell script …)로 작성됨

고급 언어 구현의 장단점

장점

  • 코드를 빠르게 작성
  • 간결한 코드
  • 이해와 디버깅이 쉬움
  • 이식하기 훨씬 쉬움

주장되는 단점

  • 속도가 느려짐, 소요 메모리가 증가됨 → 현재는 문제가 되지 않음

문제가 안되는 이유

  • 현대의 최적화 컴파일러는 일반적인 어셈블리 언어 프로그래머보다 훨씬 우수한 코드를 생성할 수 있다.
  • OS의 주된 성능 향상은 더 좋은 자료구조, 알고리즘에 의한 것이다.
  • 고성능이 중요한 소량의 코드만 어셈블리 언어 코드로 대체

태그: ,

카테고리:

업데이트:

댓글남기기