20.운영체제의 큰 그림
1.운영체제
1)정의: 사용자가 실행하는 프로그램을 위한 프로그램
2)커널(Kernel): 운영 체제의 일부로써 하드웨어와 프로세스의 운용을 위한 소프트웨어.
3)사용자 인터테이스: 사용자가 컴퓨터와 상호작용할 수 있는 통로.

*그래픽 유저 인터페이스 :그래픽 기반으로 하는 사용자 인터페이스

*커맨드라인 인터페이스 :명령어를 기반으로하는 사용자 인터페이스.

2.이중모드와 시스템 호출
1)개요
-운영체제는 사용자가 사용하는 응용프로그램이 하드웨어 자원에 직접 접근을 방지하여(보호)
운영체제를 통해서만 접근하도록 한다.

-응용프로그램은 하드웨어에 데이터를 저장하려고 한다면 운영체제에 신호를 보내게 된다.

2)이중모드
-이중모드(dual mode)란 CPU가 명령어를 실행하는 모드를 사용자모드와 커널모드로 나누는 방식.
-사용자모드(user mode)
:운영체제 서비스를 제공받을 수 없는 실행모드, 커널 영역의 코드를 실행할 수 없는 모드.
(하드웨어 자원에 접근할 수 없다.)
-커널모드(Kernel mode)
:운영체제 서비스를 제공받을 수 있는 실행모드, 커널 영역의 코드를 실행할 수 있는 모드.
(하드웨어 자원에 접근할 수 있다.)

-사용자 모드로 실행 중인 프로그램이 자원에 접근하는 운영체제 서비스를 받으려면 커널모드가
되어야 한다.
3)시스템 호출(System Call)
-응용 프로그램이 운영체제에게 운영체제를 서비스를 제공받기 위한 요청.
-시스템 호출은 일종의 인터럽트이며 소프트웨어 인터럽트라고 한다.


-실행과정으로
'시스템호출로 인해 커널모드 변경 =>운영체제내에 명령어를 처리 =>명령이 처리 되었으면 다시 복귀'
과정을 거친다.

4.운영체제의 핵심 서비스
1)프로세스 관리
-프로세스(실행 중인 프로그램)을 생성,삭제 관리한다.
-일반적으로 하나의 CPU는 한 번에 하나의 프로세스를 실행하기에 CPU는 프로세스를 번갈아 실행한다.

2)자원 접근 및 할당
-어떤 프로세스를 얼마간 운영할지 운영체제는 CPU가 프로세스를 효율적으로 이용하게 한다.(CPU스케줄링)
-프로세스의 다양한 메모리 크기 및 주소에 맞춰 운영체제는 메모리에 적재될 프로그램의 주소를 관리한다.
-인터럽트 서비스 루틴은 운영체제가 제공하는 기능으로 커널영역이다. 입출력장치의 하드웨어 인터럽트도
커널영역으로 입출력 작업을 할 수있도록 한다.
3)파일 시스템 관리
-파일의 열기,닫기,생성 삭제 및 디렉토리(폴더) 등 관리를 하는 파일 시스템이 있다.