프로그램을 실행할 수 있는 시스템을 제공하는 것을 운영체제 서비스라고 한다.
[운영체제 서비스]
<사용자에게 편의를 주는서비스>
1 ) UI : CLI, GUI, Batch(터치스크린)
2 ) 프로그램 실행
3 ) I/O
4 ) 파일 시스템 조작
5 ) 통신 - 프로세스 간 정보 교환
- 메시지 전달 방식, 메모리 공유 방식
6 ) 오류 탐지
<시스템의 효율을 높여주는 서비스>
1 ) 자원 할당
2 ) 로그 기록
3 ) 보안과 보호
[시스템 콜]
운영체제에 의해 사용 가능하게 된 서비스의 인터페이스 제공.
주로 C/C++로 작성되었고, 개발자들은 API를 이용해 개발
- POSIX API, Win32 API, JAVA API
Read(int fd, void *buf, size_t count)
읽을 파일, 버퍼, 버퍼 사이즈
이런 함수의 인수를 전달하는 방법을 알아보자
1 ) 레지스터 이용
2 ) 블록, 테이블, 메모리에 저장 후 레지스터에 주소 전달
3 ) 스택 이용
[시스템 콜의 유형]
1 ) 프로세스 제어 2 ) 파일 조작 3 ) 장치 조작 4 ) 정보 유지 보수 5 ) 통신과 보호
[Example]
1 ) MS-DOS : 단일 태스크
프로세스 실행되는 동안 interpreter 기다림
2 ) FreeBSD : 다중 태스크
: 유저가 로그인 하면 쉘을 실행.
: 쉘에서 fork()를 실행하여 프로세스 생성, exec()를 이용하여 메모리에 적재함.