본문 바로가기
OS

운영체제의 구조

by 티옌.liy 2016. 10. 5.

※ 이 자료는 '순천향대학교 컴퓨터 공학과 - 운영체제의 구조' 를 바탕으로 제작했습니다.



여러분도 알다시피 운영체제가 하는 일은 컴퓨터와 유저간의 소통을 위한 인터페이스이다.

즉, 사람과 컴퓨터 사이중간에서 일을 하고 있는 것이다.

이때, OS가 하는일을 나열해 보면 아래와 같다.


1. User 편의성 - 프로그램과 사용자에게 서비스 제공

  • 사용자 인터페이스( User Interface )   ||   CLI, GUI   ||
  • 프로그램 입출력 수행 및 실행( Program execution )
  • 파일 시스템 조작( File System Manipulation )
  • 통신 기능( Communications )  ||    공유 메모리와 메세지 전달 역할  ||
  • 오류 검출( Error detection )    ||    헤밍 코드, 패리티 비트   ||

2. System 편의성 - 시스템 자체의 효율적인 동작을 보장.

  • 자원할당 관리( Resource allocation )
  • 회계<리소스> ( Accounting )
  • 정보 보호 및 보안( Protection , Security )


이 처럼 OS가 하는 일은 매우 많은데, 이때 사용자와 시스템 사이에서 OS가 효율적으로 움직일 수 있도록 도와주는 'System Call'이 있다.




♣ System Call



위의 그림과 같이, System Call은 프로세스와 OS간의 인터페이스를 제공한다.

보통 API (Application Programming Interface)라는 형태로 제공, 내부의 과정들은 사용자에게 공개하지 않는다.

일반적으로 C와 C++로 작성된 루틴 형태로 제공된다. 그래서 사용자가 직접 System Call을 할 수 있다.



API   


API의 원형은 System Call이다. 그러나 프로그램은 직접 System Call을 사용하지 않고 API 형태로 전환하여 사용하는데,

크게 2가지 이유떄문에 사용한다.

  •  프로그램의 호환성
  •  사용성의 용이함

아래의 그림은 System Call의 원형을 번역한 내용이다.

< System Call의 예>



이것은 System Call을 API 형태로 전환한 것이다.

< 표준 API >


프로그래머의 입장에선 API는 함수형태로 System Call을 제공해 주니 코드를 사용하기도 편하고 가독성도 좋다!

어차피 System Call은 내부의 복잡한 과정은 사용자에게 공개하지 않기에 요약된 API만 있으면 충분하다.

즉, System Call은 본문을 나열한 것이고, API는 본문의 내용을 요약한 요약본이다.




위 그림은 System Call과 API를 도식화 한 그림이다.

< Open() System Call - API >


사용자 모드에 있는 Open()  함수가 커널모드로 넘어가면서 호출구현, return 등등 복합한 과정으로 바뀌어서 해석된다.

그리고 그 과정들을 OS가 처리한 후, 값을 리턴해서 유저에게 반환해준다.

한마디로, 복잡한 돈계산을 회계사가 대신 해주고 결과값만 이용자에게 제공해주는 것이다.



전달 방법   


System Call의 Parameter(파라미터 = 매개변수 )들은 아래와 같은 방식을 거쳐 전달된다.


< 테이블로 Parameter(매개변수)를 전달 >

  • 레지스터를 통해 매개변수를 직접 전달  ---> 그러나 매개변수가 길어지면 문제가 될 수 있다.
  • 메모리에 Block 형태 또는 테이블 형태로 저장하고, 블록의 주소가 레지스터내에 매개변수로 전달
  • 프로그램에 의해서 Stack으로 넣고, OS에 의해서 꺼낼(pop off) 수 있다.




여기까지 System Call의 원리를 다루었다.

이제 System Call의 종류를 알아보자!





♣ System Call의 종류



< Windows와 Linux의 System Call >



1. 프로세스 제어 ( Process control )

  • 프로세스 끝내기 (End),  중지 (abort)
  • 프로세스 적재 (load),  실행 (execute)
  • 프로세스 생성 및 종료
  • 프로세스 속성 획득 및 설정
  • 프로세스 대기 (wait time)
  • 사건 대기(wait event), 사건 알림(signal event)  ---> 스마트폰의 알림창이라 보면 쉽다.
  • 메모리 할당 및 해제



2. 파일 관리 ( File Manipulation )

  • 파일 생성(create) 및 삭제(delete)
  • 파일 열기(open), 닫기(close)
  • 파일 읽기, 쓰기, 위치 변경
  • 파일 속성 획득 및 설정


3. 장치 관리 ( Device Management )

  • 장치 사용 요청(request device), 및 해제(release device)
  • 장치 읽기, 쓰기, 위치변경
  • 장치 속성 획득 및 설정
  • 장치 추가(attach) 및 제거(detach)


4. 정보 유지 ( Information maintenance )

  • 시간과 날짜 설정 및 획득
  • 시스템 데이터 설정 및 획득
  • 프로세스, 파일, 장치 속성의 획득 및 설정


5. 통신 ( Communications )

  • 프로세스 간의 통신 연결 생성 및 제거
  • 메세지 송신, 수신
  • 상태 정보 전달


보기에는 항목도 많고 외울것도 많아보이지만 잘 읽어보면 평소에 사용하던 것과 별 다를게 없다.

그러므로, 프로세스 제어는 잘 보고, 나머지는 외우기보단 이런것이 있구나 하고 읽고 넘기자. 

'OS' 카테고리의 다른 글

Cent OS에 대한 설명  (0) 2016.09.16
운영체제의 종류  (1) 2016.09.04

댓글