운영체제의 구조
시스템 호출
: c,c++로 작성된 루틴형태로 제공되며, 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스를 제공한다
컴파일러에 포함된 라이브러리 내장 함수 집합은 운영체제가 제공하는 시스템 호출에 대한 연결로 동작하는 시스템 인터페이스를 제공한다. 각 시스템 호출에는 번호가 할당되고 시스템 호출 인터페이스는 이 번호에 따라 색인되는 테이블을 유지하며, 시스템 호출을 부르고 상태와 반환 값을 돌려준다.
운영체제 매개변수를 전달 3가지 방법
- 레지스터 내에 전달
- 레지스터보다 많은 매개변수가 있을 경우 매개변수는 메모리 내의 블록이나 테이블에 저장하고 그 블록의 주소를 레지스터 내의 매개변수로 전달한다
- 스택 : 매개변수의 개수나 길이를 제한하지 않는 장점
시스템 호출의 유형
- 프로세스 제어 : 끝내기, 중지, 적재, 실행, 프로세스 생성, 프로세스 종료, 프로세스 속성 획득, 프로세스 속성 설정, 시간을 기다림, 이벤트 기다림, 이벤트 알림, 메모리 할당 및 자유화
- 파일 조작 : 파일 생성, 파일 삭제, 열기, 닫기, 읽기 쓰기, 위치 변경, 파일 속성 획득 및 설정
- 장치 관리 : 요청, 방출, 읽기, 쓰기, 위치 변경, 장치속성 획득 및 설정, 장치의 논리적 부착 또는 분리
- 정보 유지 : 시간과 날짜의 설정과 획득, 시스템 자료의 설정과 획득, 프로세스, 파일, 장치 속성의 획득 및 설정
- 통신 : 통신 연결의 생성, 제거, 메시지의 송신, 수신, 상태 정보 전달, 원격 장치의 부착 및 분리
많은 시스템이 시스템 호출을 제공하며 이는 메모리 덤프(디버깅)에 유용하다.
시간 프로파일(time profile)
프로그램이 특정 위치 혹은, 위치의 집합에서 수행한 시간의 양을 나타냄
단일 태스킹(MS_DOS) 호출되는 하나의 명령어 해석기를 갖는다.
다중 태스킹(FreeBSD) 사용자가 시스템에 로그인 시 사용자가 선택한 셀이 수행된다. 이 셀은 명령을 받아서 사용자가 요청한 프로그램을 수행하며, FreeBSD의 명령어 해석기는 다른 프로그램이 수행되는동안 수행을 지속할 수 있다.
새로운 프로세스를 시작하기 위해 fork()
프로그램의 시스템 호출을 통해 메모리에 적재하기 위한 exec()
종료하기 위해 exit()
시스템은 다향한 방식으로 모듈화 되며 계층정 접근방식이 있는데 운영체제가 여러 계층으로 나누어진다. 최하위 0계층(하드웨어) 최상위 N계층(사용자 인터페이스) 장점은 구현과 디버깅이 간단하다. 계층은 자신의 하위 계층들의 서비스와 기능을 사용하기 때문이다. 단점은 계층의 정의가 애매하고 다른 유형의 구현방법보다 효율성이 떨어진다.
모듈화는 객체지향 프로그래밍 기법으로 solaris는 핵심커널 7가지 유형의 적재 가능 커널 모듈로 구성된다
- 스케줄링 클래스, 파일 시스템, 적재 가능 시스템 호출, 실행 파일 형식, STREAMS 모듈, 기타 잡다한 기능, 장치 및 버스 드라이버
가상기계 : 한 컴퓨터의 하드웨어가 다수의 다른 실행환경을 제공하도록 추상화하는 것으로 동일한 하드웨어를 공유하면서 다수의 다른 실행환경(OS)를 동시에 수행하고 싶을 때 사용한다.
0 개의 댓글:
댓글 쓰기