사전적 정의에 의한 커널: 1. (견과류.씨앗의) 알맹이 2. (사상.주제의)핵심
커널이란? OS의 핵심 기능
사전적 정의에 의한 쉘: (달걀.견과류 등의 딱딱한) 껍데기, 2고둥 껍데기 모양의 것
쉘이란? OS와 사용자 간의 연결고리 역할을 하는 커널의 껍데기(OS와 사용자 사이에 있기 때문)
다음과 같은 명령을 컴퓨터에 실행한다고 가정해보자.
1. 1 ~ 1000까지 합을 구하고
2. 파일에서 데이터 가져오고
3. 해당 데이터와 1 ~ 1000의 합을 더하고 출력한다.
여기서 1번과 3번은 응용프로그램에서 처리가 될 수 있는 부분이고
2번은 OS를 통해서 하드웨어 자원에 접근해서 데이터를 가지고 와야 한다.
이 예제를 통해서 보면, 명령에 따라서 OS를 사용할 수도 사용하지 않을 수도 있다는 것을 알 수 있다.
#Include <unistd.h>
#Include <sty/types.h>
#Include <sys/stat.h>
#Include <fcntl.h>
Int main()
{
int fd:
fd = open('data.txt'.O_RDONLY);
if(fd=-1)
{
printf("Error: can not open file₩n");
/*파일을 열지 못했으므로 종료*/
return 1;
}
else
{
printf(*File opend and now close_₩n*);
close(fd);
return ();
}
}
파일은 저장매체에 있기 때문에 OS를 통해서 하드웨어 자원에 접근
파일을 오픈하는 이외의 코드들은 사용자 모드에서 처리
사용자 프로그램: open() 함수 호출
#include <unistd.h> /*라이브러리*/
main(){
open()
unistd.h 파일
open 선언
open() => sys_open()