따..딱히 공부하려고 포스팅하는 건 아니니까..!
시스템 호출(System Call) 본문
컴퓨터 시스템 : 하드웨어와 소프트웨어로 구성
- 하드웨어 : CPU, 메모리, 저장장치, 주변장치 등으로 구성
- 소프트웨어 : 운영체제, 데이터베이스 시스템 등
유닉스/리눅스는 커널이 하드웨어를 운영관리 하며 다음과 같은 서비스를 제공한다.
1. 프로세스 관리 (Process Management)
: 여러개의 응용 프로그램들이 실행될 수 있도록 프로세스들을 스케쥴링한다.
: 마치 동시에 수행되는 듯한 효과를 낸다.
2. 파일 관리 (File Management)
: 디스크와 같은 저장장치 상에 파일 시스템을 구성하여 파일을 관리한다.
3. 메모리 관리 (Memory Management)
: 메인 메모리가 효과적으로 사용될 수 있도록 관리한다.
4. 통신 관리 (Communication Management)
: 네트워크를 통해 정보를 주고받을 수 있도록 관리한다.
5. 주변장치 관리 (Device Management)
: 모니터, 키보드, 마우스와 같은 장치들을 사용할 수 있도록 관리한다.
시스템 호출 (System Call)
커널에 서비스를 요청하기 위한 프로그래밍 인터페이스이다. 사용자와 커널간 통신하는 방법이며, 유저와 커널을 구별해주는 징검다리 역할을 한다. 결과적으로 응용 프로그램과 커널 사이의 인터페이스 역할을 한다.
응용 프로그램은 이 시스템 호출을 통해 필요할 때 마다 커널에 서비스를 요청할 수 있다.
바꿔 말하면, 응용 프로그램은 파일에 직접 접근할 수 없으며 반드시 커널에 파일에 대한 서비스(파일 열기, 읽기, 쓰기, 닫기 등)를 요청해야 한다.
< 응용 프로그램이 서비스를 요청하는 과정 >
① 사용자 모드에서 실행하다가 시스템 호출
② 커널 모드로 이동 (커널 공간으로 들어가면 유저레벨에 있는 공간(용량)을 커널의 데이터 공간에 복사해서 저장하여 사용한다. (커널 버추얼 공간을 생성))
③ 커널 내의 코드를 실행한 후, 다시 사용자 모드로 돌아옴
이때, 사용자 공간에 있는 것은 사용자 공간에만 접근이 가능하고, 커널 공간에 있는 것은 커널 공간에만 접근이 가능하다.
이렇게 하는 이유는
① 사용자 모드에서는 실행할 수 있는 기계어 명령어에 제한이 있지만
커널 모드에서는 어떠한 기계어 명령어도 실행 가능하기 때문이다.
② 시스템을 보호하기 위해서이다.
'시스템|서버|네트워크' 카테고리의 다른 글
[리눅스]프로세스 제어 (프로세스 생성) (0) | 2015.04.30 |
---|---|
vagrant와 윈도우즈 연결하기 (0) | 2015.01.14 |
[리눅스]프로세스(Process) (0) | 2014.12.09 |
파일 시스템(File System) (1) | 2014.11.26 |
C 표준 파일 입출력 (0) | 2014.11.15 |