카테고리 없음2013. 1. 3. 15:40

시스템 호출(System call)


정의 : 프로세스가 운영체제와 통신하기 위한 유일한 방법.


앞에서 운영체제가 제공하는 서비스들을 살펴보았는데, 이런 서비스에 대한 프로그래밍 인터페이스(Programming Interface : PI)를 제공하는 것이 바로 시스템 호출이다. 시스템 호출은 특정 저수준 작업(하드웨어를 직접 접근하는 작업 등)은 어셈블리 명령을 사용하여 작성되어야 하지만, 일반적으로 C, C++같은 고급 언어로 작성된 루틴 형태로 제공된다.


일단 시스템 호출이 어떻게 사용되는지를  알아보자.


시스템 호출 과정


<파일의 내용을 다른 파일에 복사하는 시스템 호출 순서>


위에서 보듯, 간단한 프로그램이라도 운영체제를 많이 사용하게 된다. 어쩌면 종종 초 당 수천 개의 시스템 호출을 수행하게 된다. 하지만 대부분의 사용자들은, 이 정도로 상세하게 알지 못한다. 대부분의 응용 프로그램 개발자들은 응용 프로그래밍 인터페이스(Application Programming Interface, API)에 따라 프로그램을 설계한다. 호출자는 시스템 호출이 어떻게 구현되고 실행 중 무슨 작업이 일어나는지 아무 것도 알 필요가 없다. 단지 API를 준수하고 시스템 호출의 결과로 운영체제가 무엇을 해 줄 것인지만 이해하면 된다. 따라서 운영체제 인터페이스에 대한 대부분의 자세한 내용은 API에 의해 프로그래머로부터 숨겨지고 실행시간 지원 라이브러리에 의해 관리된다. 실행시간 지원 시스템은 운영체제가 제공하는 시스템 호출에 대한 연결로서 동작하는 시스템 호출 인터페이스를 제공한다. 시스템 호출 인터페이스는 API함수의 호출을 가로채어 운영체제 시스템 호출을 부른다. 간단하게 정리하자면 System call Interface는 커널에 서비스를 요청하거나 하드웨어를 조작하고자 하는 명령이 발생하면 인터럽트(Software Interrupt)를 읽어 해당 함수를 호출하여 주는 것을 말한다. 다음 그림을 보면 이해가 더 쉽다.





< open() 시스템 호출을 호출한 사용자 응용의 처리 >


위 그림은 API를 준수하여 작성된 사용자 응용 프로그램이 있을 때, 해당 프로그램에서 open 시스템 콜을 호출하는 명령어가 있다고 하자. 해당 명령어는 목적에 맞는 시스템 콜을 미리 정의되어 있는 라이브러리에서 캐치한다. 라이브러리가 시스템 호출 색인과 매개변수를 받으면 소프트웨어적인 인터럽트를 발생시킨다. 여기서 말하는 라이브러리가 바로 시스템 호출 인터페이스라고 보시면 된다.

추가적으로 설명을 하자면 그림의 아래보이는 사각형은 시스템 호출 함수들이 색인되어 테이블에 저장된 것이라고 보면 된다. 앞에서 라이브러리가 시스템 호출 색인을 받는다고 하였는데, 테이블에서 색인 번호에 해당하는 시스템 콜 함수를 불러온다고 생각하면 될 것이다.




< 시스템 호출 in C language >


시스템 호출 - 매개변수 전송


위 그림에서 볼 수 있듯, 시스템 호출 시에 매개변수가 전달되기도 한다. 운영체제는 이 매개변수를 전달하기위해서 일반적으로 세 가지 방법을 사용한다.


1. 레지스터를 통한 전송

- 매개변수가 레지스터로 직접 전달되나, 레지스터 크기보다 더 많은 매개변수가 존재하므로 좋지 않은 방법.


2. 블록 or 테이블을 통한 전송

- 매개변수가 메모리 내의 블록이나 테이블에 저장되고, 해당 주소가 레지스터의 매개변수로 전달된다.


3. 스택을 통한 전송

- 매개변수는 프로그램에 의해 스택에 넣어지고(push), 운영체제에 의애 꺼내진다.(pop off)


보통 운영체제는 두 번째 방법을 선호하는데, 이 접근법은 전달되는 매개변수들의 개수나 길이를 제한하지 않기 때문이다.



시스템 호출의 유형


시스템 호출은 다음과 같이 다섯 가지 유형으로 나뉠 수 있다.


1) 프로세스 제어

2) 파일 관리

3) 장치 관리

4) 정보 유지

5) 통신



Posted by twinjh
OS2012. 12. 30. 05:46

이 장에서는 운영체제가 사용자와 프로세스, 사용자와 다른 시스템에게 제공하는 서비스를 설명한다. 즉, 운영체제를 구조화하는 다양한 방법에 대해 알아본다.


운영체제 서비스

운영체제는 사용자에게 편리성효율성을 제공한다. 먼저 편리성에 관한 것을 살펴보자.


편리성 : 운영체제 서비스는 사용자에게 도움이 되는 기능들을 제공한다.


1. 사용자 인터페이스(User Interface)

대부분의 모든 운영체제는 사용자 인터페이스(UI)를 가진다. CLI(Command Line Interface), GUI(Graphical User Interface), 일괄처리 인터페이스 등 다양한 사용자 인터페이스를 가진다.


2. 프로그램 실행

시스템은 프로그램을 메모리에 적재하고, 적재한 프로그램을 실행하고, 정상적이든 비정상적이든 종료할 수 있어야 한다.


3. 입출력 연산

프로그램은 파일이나 입출력 장치를 포함하는 입출력을 요구할 수 있다.


4. 파일 시스템 조작

프로세스는 파일과 디렉터리를 읽고 쓰는 기능, 생성하고 삭제하는 기능, 검색하는 기능, 리스트 하는 기능을 필요로 한다.


5. 통신

프로세스는 같은 컴퓨터 내에서 정보를 교환하거나, 네트워크를 통해서 다른 컴퓨터 사이에 정보를 교환한다.


6. 오류 검출

운영체제는 끊임없이 CPU와 메모리, 입출력 장치, 프로그램 내에서 발생하는 오류에 대해서 인식한다.


효율성 : 운영체제 기능 중 다른 것은 사용자를 위한 것이 아니라, 시스템 자체의 효율적인 동작을 보장하기 위한 기능들이다. 멀티유저 시스템(OS)에서는 사용자들 간에 자원을 공유하게 함으로써 효율성을 얻게 한다.


7. 자원 할당

여러 사용자가 있고, 여러 작업이 동시에 수행될 때, 각 작업에 자원이 할당되어야 한다.


8. 회계

어떤 사용자가 어떤 종류의 자원을 얼마나 사용했는지 기록하는 것이다.


9. 보호와 보안


보호 운영체제는 기본적으로 시스템에 대한 모든 접근 권한이 통제되는 것을 보장한다. 이것을 보호라고 한다.

보안 또한 운영체제는 외부 사용자로부터 시스템에 대한 사용자 인증을 요구한다. 이것을 보안이라고 한다.



(왼쪽)운영체제는 기본적으로 방화벽을 가지고 있다.

때문에 사실상 외부에서 시스템에 대한 모든 접근을 통제한다.

(오른쪽)이때 방화벽의 일부를 열어서 운영체제로 접근할 수 있게 하는 것이 보안이다.

운영체제와 사용자가 미리 약속해 놓은 아이디 와 패스워드를 가지고 운영체제 에 접근한다고 보면 됨.




사용자 인터페이스(UI)


CLI(Command Line Interface)

직접적인 명령을 내린다. 취향에 따라서 여러 형태로 구현된다.(bash, sch, cmd...)

기본적으로 사용자로부터 명령어를 받아들여 그것을 수행한다.


GUI(Graphical User Interface)

보통 마우스, 키보드, 모니터 등을 이용하여 아이콘을 클릭하거나 하는 직관적인 입력이 가능한 인터페이스이다.


많은 시스템들이 현재 CLI와 GUI 두 가지를 모두 제공하고 있다. 예로 윈도우는 CMD에서 CLI환경을 제공하고, 그 외에는 GUI를 제공하는 식이다.










'OS' 카테고리의 다른 글

3-1. 프로세스 : 프로세스의 연산  (1) 2013.01.16
3-1. 프로세스 : 프로세스 개념, 프로세스 스케줄링  (1) 2013.01.09
2-3. 운영체제 구조  (0) 2013.01.03
1. Introduction  (0) 2012.12.30
Posted by twinjh
OS2012. 12. 30. 04:52


여기서는 운영체제(Operating System)가 무엇인지 정의와 역할에 대해서 알아보고, 앞으로 이야기해 나갈 내용들을 간략하게 소개하고자 한다.

내가 배웠던 운영체제 수업 내용을 정리한 것인 만큼 이곳에서 말하는 내용은 수업 자료와 Operating System책에 있는 내용을 기준으로 하도록 하겠다.




OS란 무엇인가?


먼저 우리가 이야기하고자하는 이 OS라는 놈은 무엇인지 왜 배워야 하는가를 이야기해보자.

흔히 운영체제를 검색하면 다음과 같은 정의를 볼 수 있을 것이다.


- 운영체제 또는 오페레이팅 시스템(OS, Operating System)은 시스템 하드웨어를 관리할 뿐만 아니라 응용 소프트웨어를 실행하기 위한 시스템 소프트웨어이다.


쉽게 말하면 os는 컴퓨터 하드웨어(하드디스크, RAM 등...)를 관리하는 프로그램인 것이다. 때문에 운영체제는 사용자와 하드웨어 사이의 중재자 역할을 한다고 말할 수 있는 것이다.


OS의 목적?


- 환경관리 : 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.

- 프로세스관리 : 사용자 프로그램을 실행할 수 있다. 이것은 사용자가 하고자 하는 일을 좀 더 쉽게 해결 할 수 있도록 해준다.

- 자원관리 : 컴퓨터 하드웨어를 효율적인 방법으로 사용하게 하기 위함.


운영체제의 구조를 알고 싶으신 분은 다음 링크로 가면 간략히 소개되어 있다.

>>  http://twinjh.tistory.com/12


링크에 있는 큰 그림중 커널 부분이 대략 운영체제라고 보면 이해가 빠를 것이다.


컴퓨터 시스템의 네 가지 컴포넌트

하드웨어, 운영체제, 프로그램, 사용자(위 링크의 그림과 유사함)


지금까지는 운영체제가 무엇이고, 어떻게 구성되었는가를 알아보았다. 앞으로는 앞서 말한 운영체제의 목적을 이루기 위해서 어떤 작업들이 이루어지는지를 이야기하게 될 것이다. 즉 운영체제가 내부적으로 어떻게 작동하는지 어떤 작업이 이루어지는지, 어떤 패러다임을 사용하여 목적을 달성하는지를 자세하게 알아볼 것이다.

- 운영체제의 구조

- 프로세스

- 쓰레드

- CPU 스케줄링

- 프로세스 동기화

- 데드락

- 메모리

이 순서로 운영체제의 내부 동작에 대해서 공부하도록 할 것이다.


1장 정리.hwp



Posted by twinjh