윌리엄 스탈링스는
운영체제란 사용자가 컴퓨터 시스템을 손쉽게 사용하도록 하고, 시스템 자원(기억장치,
프로세서, 입출력 장치, 정보, 네트워크등을) 효율적으로 관리할 수 있도록 하는 프로그램 집합
이라고 정의했다.
운영체제를 엄마, 운영체제에서 실행되는 프로그램등을 아이들로 생각하면 편할듯하다.
곁에서 잘 작동되게 도와주고 그러는 역할이 운영체제이기 때문에
운영체제는 종류가 많은데 일단 PC 구성을 기준으로 기능을 살펴보자
일반 PC는 단일 사용자 운영체제 구성 모델, 즉 사용자 명령 인터페이스를 중심으로
메모리 관리자, 프로세서 관리자, 장치 관리자, 파일 관리자 등 네가지 서브시스템
관리자로 기본 구성된다. 그리고 네트워크를 지원하는 운영체제라면
네트워크 관리자가 추가된다.
사용자 인터페이스는 사용자와 시스템의 대화수단
DOS나 유닉스에서는 검은색 화면에 푸른색 커서가 깜박깜박하는 셸이 대화 수단이었다.
요즘에는 대부분 GUI를 적용하기에 여러 인터페이스 이용하여 시스템과 대화한다.(예:마우스같은거)
윈도우의 커널구조와 파일 시스템 구조를 알아본다.
먼저 커널이란 운영체제의 중심에 위치하며, 운영체에서 어떤 작업을 시작하더라도
커널 동작으로 제어한다.
즉, 커널은 인터럽트 처리, 프로세스관리, 메모리 관리, 파일 시스템 관리, 프로그래밍 인터페이스
제공 등 운영체제 기본 기능을 제공하는 핵심이라고 할 수 있다.
참고: 인터럽트란??
작동 중인 컴퓨터에서 예기치 않은 문제가 발생한 경우 CPU가 하드웨어적으로 상태를 체크하여 변화에
대응하는것
커널이 손상되지 않도록 접근 가능한 메모리에 로드하지않음
커널이 손상되면 부팅할때 블루 스크린을 표시함
윈도우 시스템은 보통 링구조로 되어있다.
맨 밑에서 부터 하드웨어 -> 하드웨어 제어하는 HAL -> 마이크로 커널
-> 각종 관리자 -> 운영체제에서 동작하는 갖가지 응용 프로그램 순으로 위치함

커널모드는 기본적으로 사용자가 접근할 수 없는 영역으로, 프로그램을 실행하는 기본관리 시스템이 위치함
윈도우는 사용자가 프로그램을 만들고 실행하는 모든 과정을 사용자 모드에서만 가능하도록 설계했으나,
완벽하게 구현하지 못함
(예를들어 윈도우에서는 마이크로 커널이 HAL을 무시하고 하드웨어와 통신할수있는데 이것에서 보안의 허점이.)

다음으로 마이크로 커널이 있다. 본래 커널은 현재 관리자 들이 하던 일을 도맡아 했는데
이걸 여러 관리자에게 분담시키고 자신은 하드웨어와 하는 통신만 제어함으로써 최소한의 커널이 되었는데
이를 마이크로 커널이라 한다.
다음으로 관리자의 역할을 알아보자
유닉스 커널은 윈도우처럼 개별관리자 존재x
유닉스에는 커널을 거대한 프로그램 덩어리로 만든 모놀리식 커널과 개별 모듈로 구성된 마이크로 커널이 있다.
모놀리식 커널은 거대한 커널이 모든 기능을 수행하도록 만들어졌으며 안정적이지만 문제가 발생하면 부분수정이
어렵다. 모놀리식 커널은 일반 시스템 보다 거대한 슈퍼컴퓨터에 많이 적용된다.
유닉스에서의 마이크로 커널은 모듈 여러 개가 모여 커널 하나를 이루는 개념이다.
개별 모듈의 업로드와 언로드가 가능하다.
그러나 각 모듈 권한이 동일하여 잘못된 모듈을 업로드하면 커널 전체가 망가질수있다.
부분 모듈의 업로드를 이용하여 커널에 백도어를 심을수도 있다.
유닉스 링구조를 살펴보면 하드웨어, 커널, 셸, 응용프로그램 으로 구성되어있다.
링 개수가 많을수록 보안 레벨은 높지만 그렇다고 윈도우가 유닉스 보다 보안 레벨이 높다할수없다.
유닉스 링구조는 윈도우보다더 명확하게 구분되어있기 때문이다.

/ (루트 디렉토리)/binls, cp, mv, rm, cat, echo, bash 등)./sbinshutdown, reboot, mkfs, fsck 등)./etcpasswd, fstab, hosts, ssh/ 등)./dev/dev/sda, /dev/null, /dev/tty 등)./proc/proc/cpuinfo, /proc/meminfo, /proc/[PID]/varlog/), 메일(mail/), 캐시(cache/), 스풀(spool/) 등 실행하면서 계속 바뀌는 파일들./usr/usr/bin → 일반 사용자 실행 명령어/usr/sbin → 시스템 관리용 실행 파일/usr/lib → 라이브러리/usr/share → 매뉴얼, 문서, 공용 데이터/home/home/junha 같은 느낌)./root/home과 분리되어 있음./tmp/bootvmlinuz), 초기 램 디스크(initrd), 부트로더 설정 등이 들어있음./lib, /lib64.so 파일들.modules/)도 여기 있음./opt/mnt, /media/mnt → 관리자가 임시로 마운트할 때/media → USB, CD-ROM 등 자동 마운트되는 장치/srv/srv/www), FTP 서버(/srv/ftp) 등의 실제 데이터가 위치.