Repository navigation
4주차
운영체제(OS)
- 컴퓨터의 하드웨어와 소프트웨어 자원을 관리하고 프로그램이 실행될 수 있도록 하는 시스템 소프트웨어
- 사용자와 응용 프로그램이 하드웨어를 직접 제어하지 않아도 사용할 수 있도록 중간에서 연결함.
- 사용자/응용 프로그램 ↔ 운영체제 ↔ 하드웨어 구조로 동작함.
운영체제의 위치
-
사용자와 하드웨어 사이에서 동작함.
-
일반적인 구조
- 사용자
- 응용 프로그램
- 운영체제
- 하드웨어
운영체제의 주요 관리 대상
- CPU
- 메모리
- 파일
- 입출력장치
운영체제의 주요 역할
- CPU와 메모리 등의 자원을 여러 프로그램에 배분
- 프로그램의 실행과 종료 관리
- 파일과 폴더 관리
- 키보드, 마우스, 프린터 등의 장치 관리
- 프로그램과 사용자의 권한 관리 및 시스템 보호
- 여러 프로그램이 동시에 실행될 수 있도록 지원
사용자 모드와 커널 모드
-
사용자 모드
- 일반 응용 프로그램이 동작하는 영역
- 시스템 전체에 영향을 줄 수 있는 중요한 작업을 직접 수행하지 못하도록 제한됨.
-
시스템 호출(System Call)
- 응용 프로그램이 운영체제의 기능을 요청하는 방법
- 파일 접근이나 장치 사용 등이 필요할 때 운영체제에 요청함.
-
커널 모드
- 운영체제의 핵심 기능이 동작하는 영역
- CPU, 메모리, 장치 등의 중요한 자원에 접근 가능
-
보호된 통로를 통해 사용자 프로그램과 운영체제가 연결됨.
운영체제의 보호와 안정성
- 프로세스를 서로 분리하여 한 프로그램의 문제가 다른 프로그램에 영향을 주는 것을 줄임.
- 권한을 검사하여 허용되지 않은 작업을 제한함.
- 파일과 장치 접근 권한을 관리함.
- 오류가 발생했을 때 복구할 수 있도록 관리함.
멀티태스킹 사례
- 문서 작성
- 음악 재생
- 파일 저장
- 여러 프로그램이 동시에 실행되는 것처럼 보이지만 운영체제가 CPU와 자원을 나누어 사용하도록 관리함.
부팅(Booting)
- 컴퓨터의 전원을 켠 뒤 운영체제를 사용할 수 있는 상태까지 준비하는 과정
- 하드웨어 준비 → 운영체제 적재 → 시스템 서비스 실행 → 사용자 로그인 등의 과정으로 진행됨.
기본 부팅 순서
- 전원 켜기
- 하드웨어 점검
- 부팅 장치 찾기
- 부트 로더 실행
- 커널 실행
- 로그인 
**전원과 UEFI**
- 컴퓨터에 전원이 공급되면 CPU가 동작을 시작함.
- UEFI는 운영체제가 실행되기 전에 하드웨어를 초기화하고 부팅 준비를 수행함.
POST
- Power-On Self-Test
- 부팅 초기에 주요 하드웨어가 정상적으로 동작하는지 확인하는 과정
- CPU, RAM 등의 기본적인 하드웨어 상태를 점검함.
부팅 장치
-
운영체제를 불러올 수 있는 저장장치를 찾음.
-
예시
- SSD
- USB
- 네트워크
부트 로더
- 저장장치에서 운영체제의 커널을 찾아 메모리로 불러오고 실행하도록 연결함.
- UEFI → EFI 시스템 파티션 → 부트 로더 → 운영체제 커널 순서로 이어질 수 있음.
메모리 적재
- 운영체제는 저장장치에 저장되어 있지만 실행하려면 RAM으로 불러와야 함.
- 저장장치의 운영체제 데이터 → RAM → CPU 실행
커널 적재와 초기화
- 운영체제의 핵심인 커널이 RAM에 적재됨.
- 커널이 CPU, 메모리, 장치 등을 사용할 수 있도록 시스템을 초기화함.
- 초기 장치 드라이버와 파일 시스템 등을 준비함.
서비스 실행
-
커널이 준비되면 운영체제에서 필요한 여러 시스템 서비스가 실행됨.
-
예시
- 네트워크
- 그래픽·오디오
- 보안
- 자동 시작 프로그램
로그인
- 시스템 준비가 끝난 후 사용자가 계정으로 로그인함.
- 로그인 후 사용자 환경과 프로그램을 사용할 수 있게 됨.
느린 부팅의 원인
- 저장장치 속도
- 자동 시작 프로그램
- 업데이트
- 장치 초기화
- 부팅 과정 중 어느 단계가 느린지 확인하는 것이 중요함.
보안과 복구
-
Secure Boot
- 서명되고 신뢰할 수 있는 부트 로더를 확인하여 부팅 과정의 변조를 방지
-
안전 모드
- 최소한의 드라이버와 기능으로 운영체제를 실행하여 문제를 진단
-
복구 환경
- 부팅에 문제가 발생했을 때 시스템을 진단하거나 복원하는 데 사용
프로그램과 프로세스
-
프로그램
- 저장장치에 저장된 실행 가능한 코드
- 실행되기 전에는 파일 형태로 존재함.
-
프로세스
- 프로그램을 실행하여 실제로 CPU와 메모리 등의 자원을 사용하는 상태
-
프로그램 파일 → 실행 → 프로세스
프로세스의 구성
- 코드
- 데이터
- 메모리
- 실행에 필요한 각종 자원
- 운영체제는 각각의 프로세스를 구분하여 관리함.
스레드(Thread)
- 프로세스 안에서 실제 작업을 수행하는 실행 흐름
- 하나의 프로세스 안에 여러 스레드가 존재할 수 있음.
- 여러 스레드를 이용하면 하나의 프로그램에서도 여러 작업을 나누어 처리할 수 있음.
프로세스 상태
-
준비(Ready)
- CPU를 사용할 준비가 되어 대기하는 상태
-
실행(Running)
- CPU를 배정받아 명령을 처리하고 있는 상태
-
대기(Waiting)
- 입출력 등의 작업이 끝나기를 기다리는 상태
-
완료
- 실행을 모두 마친 상태 
**CPU 스케줄링**
- 여러 프로세스가 CPU를 사용하려고 할 때 운영체제가 어떤 프로세스에 CPU를 배정할지 결정함.
- CPU 시간을 짧게 나누어 여러 프로세스에 번갈아 배정함.
- 빠르게 전환되기 때문에 사용자는 여러 프로그램이 동시에 실행되는 것처럼 느낄 수 있음.
선점
- 운영체제가 현재 실행 중인 작업의 CPU 사용을 중단시키고 다른 작업에 CPU를 배정할 수 있음.
- 특정 프로세스가 CPU를 계속 독점하는 것을 방지함.
문맥 교환(Context Switch)
- CPU가 실행 중이던 작업을 다른 작업으로 바꾸는 과정
- 기존 프로세스의 실행 상태를 저장
- 다른 프로세스를 실행
- 다시 돌아올 때 저장했던 상태를 복원
- 문맥 교환에도 일정한 시간이 필요하므로 너무 자주 발생하면 성능 저하가 발생할 수 있음.
여러 코어
-
CPU 코어가 여러 개라면 여러 작업을 실제로 동시에 실행할 수 있음.
-
단일 코어
- 여러 작업을 매우 빠르게 번갈아 실행
-
여러 코어
- 서로 다른 코어에서 여러 작업을 동시에 실행 가능
-
코어가 많다고 해서 모든 작업이 자동으로 완전히 병렬화되는 것은 아님.
동시성과 병렬성
-
동시성
- 여러 작업이 일정 시간 동안 번갈아 진행되는 방식
-
병렬성
- 여러 CPU 코어에서 여러 작업이 실제로 동시에 실행되는 방식
공유 자원과 동기화
-
여러 스레드가 같은 데이터를 동시에 수정하면 실행 순서에 따라 잘못된 결과가 발생할 수 있음.
-
이를 경쟁 상태(Race Condition)라고 함.
-
공유 자원에 동시에 접근하지 못하도록 동기화가 필요함.
-
예시
- 스레드 A와 B가 같은 값을 동시에 읽고 수정하면 예상하지 못한 결과가 발생할 수 있음.
- 뮤텍스(Mutex) 등을 이용하여 한 번에 하나의 스레드만 공유 자원에 접근하도록 제한
멀티태스킹
- 운영체제의 상태 관리
- CPU 스케줄링
- 대기
- 문맥 교환
- 위 과정이 반복되면서 여러 프로그램이 동시에 실행되는 것처럼 동작함.
메모리 관리
- 실행 중인 프로그램이 사용할 RAM 공간을 운영체제가 관리함.
- 각 프로세스에 필요한 메모리를 할당하고 서로의 메모리를 침범하지 않도록 보호함.
프로세스별 메모리 공간
- 각 프로세스는 자신만의 메모리 공간을 사용하는 것처럼 동작함.
- 운영체제가 프로세스 A, B, C 등의 메모리 영역을 관리하고 보호함.
가상 메모리
- 각 프로세스에 독립적인 가상 주소 공간을 제공하는 방식
- 프로그램은 실제 RAM의 물리 주소를 직접 사용하는 대신 가상 주소를 사용함.
- 운영체제와 하드웨어가 가상 주소를 실제 물리 주소와 연결함.
가상 주소와 물리 주소
- 프로그램이 사용하는 주소 → 가상 주소
- 실제 RAM의 위치 → 물리 주소
- MMU(Memory Management Unit)가 주소 변환을 수행함.
- 운영체제가 관리하는 페이지 테이블을 이용하여 가상 주소를 물리 주소에 연결함. 
**페이지(Page)**
- 가상 메모리와 물리 메모리를 일정한 크기의 블록으로 나누어 관리하는 단위
- 프로세스의 가상 페이지를 RAM의 물리 프레임에 연결하여 사용함.
페이지 테이블
- 가상 페이지와 실제 RAM의 물리 프레임 사이의 대응 관계를 저장함.
- 운영체제가 프로세스마다 주소 변환 정보를 관리함.
TLB
- Translation Lookaside Buffer
- 최근 사용한 가상 주소 → 물리 주소 변환 정보를 빠르게 찾기 위한 캐시
- 페이지 테이블을 매번 확인하는 비용을 줄여 주소 변환 속도를 높임.
- TLB 적중 → 빠르게 주소 변환
- TLB 미스 → 페이지 테이블 확인
페이지 부재(Page Fault)
-
프로그램이 필요로 하는 페이지가 현재 RAM에 존재하지 않을 때 발생
-
처리 과정
- 프로그램이 페이지에 접근
- RAM에 페이지가 없는 것을 확인
- 운영체제가 필요한 데이터를 저장장치에서 읽음.
- RAM에 적재
- 페이지 테이블 갱신
- 프로그램 실행 재개
가상 메모리와 저장장치
- RAM이 부족하면 일부 데이터를 저장장치로 옮겨 공간을 확보할 수 있음.
- 필요한 데이터가 다시 사용되면 저장장치에서 RAM으로 가져옴.
교체
- RAM 공간이 부족할 때 기존 페이지 중 일부를 제거하고 필요한 페이지를 가져오는 과정
스왑(Swap)
- RAM의 데이터를 저장장치로 옮겨 메모리 공간을 확보하는 방식
- 저장장치는 RAM보다 느리므로 스왑이 많이 발생하면 성능이 크게 저하될 수 있음.
스래싱(Thrashing)
- RAM 부족으로 페이지를 계속 저장장치와 RAM 사이에서 교체하는 상태
- 실제 프로그램 실행보다 페이지 교체에 더 많은 시간이 사용되어 시스템이 매우 느려질 수 있음.
- 교체가 지나치면 스래싱이 발생함.
메모리 부족 관찰
-
확인할 수 있는 주요 지표
- 메모리 사용률
- 디스크 활동
- 응답 지연
-
RAM 사용률이 높고 디스크 사용이 지속적으로 증가하면서 시스템이 느려진다면 메모리 부족과 스왑 사용을 의심할 수 있음.
메모리 보호
-
페이지마다 접근 권한을 설정할 수 있음.
-
예시
- 읽기(R)
- 쓰기(W)
- 실행(X)
-
프로세스의 메모리 공간을 서로 분리하여 다른 프로세스의 메모리를 임의로 수정하지 못하도록 보호함.
입출력 관리
- 운영체제는 프로그램과 실제 하드웨어 장치 사이에서 입출력 요청을 관리함.
- 프로그램이 각 하드웨어의 세부 동작 방식을 직접 처리하지 않아도 되도록 함.
입출력 계층
- 응용 프로그램
- 시스템 호출
- 운영체제의 입출력 계층
- 장치 드라이버
- 장치 제어기
- 실제 장치
장치 드라이버
- 운영체제와 특정 하드웨어 장치 사이에서 명령을 전달하는 소프트웨어
- 운영체제의 공통 요청을 각 장치가 이해할 수 있는 방식으로 변환함.
- 장치별 명령 번역기 역할을 함.
드라이버의 역할
- 프로그램의 입출력 요청을 운영체제가 받음.
- 운영체제가 적절한 드라이버를 호출함.
- 드라이버가 장치에 맞는 명령으로 변환함.
- 장치가 실제 작업을 수행함.
- 결과가 다시 운영체제와 프로그램으로 전달됨.
플러그 앤 플레이(Plug and Play)
-
새로운 장치를 연결했을 때 운영체제가 장치를 식별하고 적절한 드라이버를 선택하여 사용할 수 있도록 설정하는 기능
-
과정
- 장치 감지
- 식별
- 드라이버 선택
- 설정
인터럽트(Interrupt)
- 장치가 작업을 완료했거나 CPU의 처리가 필요할 때 CPU에 이를 알리는 신호
- CPU가 장치의 상태를 계속 반복해서 확인하지 않아도 됨.
- 인터럽트가 발생하면 CPU가 필요한 처리를 수행한 뒤 원래 작업으로 돌아감.
폴링(Polling)
- CPU가 장치의 상태를 반복적으로 확인하는 방식
- 장치의 작업 완료 여부를 계속 질문하는 것과 비슷함.
- 단순하지만 반복 확인 과정에서 CPU 자원이 사용될 수 있음.
폴링과 인터럽트 비교
-
폴링
- CPU가 반복해서 장치 상태를 확인
-
인터럽트
- 장치가 필요한 순간 CPU에 알림
-
기다리는 동안 CPU는 다른 작업을 수행할 수 있음.
DMA
- Direct Memory Access
- 장치와 RAM 사이의 대량 데이터 전송을 CPU가 매번 직접 복사하지 않고 처리하도록 하는 방식
- CPU가 전송을 설정하면 DMA가 장치 ↔ RAM 사이의 데이터 이동을 담당함.
- 대량 데이터 전송에서 CPU의 반복 복사 부담을 줄일 수 있음.
입출력 속도 차이
-
CPU와 입출력 장치는 처리 속도가 서로 다름.
-
운영체제는 속도 차이를 조정하기 위해 여러 방법을 사용함.
-
버퍼링
- 데이터를 임시 공간에 모아 처리
-
캐싱
- 자주 사용하는 데이터를 빠른 저장 공간에 보관
-
스풀링
- 장치가 처리할 작업을 대기열에 저장하여 순서대로 처리
프린터와 스풀링
- 여러 인쇄 요청이 들어오면 운영체제가 인쇄 작업을 대기열에 저장함.
- 프린터가 한 작업씩 순서대로 처리함.
- 프로그램은 인쇄가 모두 끝날 때까지 계속 기다리지 않고 다른 작업을 수행할 수 있음.
인쇄 과정
- 인쇄 버튼
- 대기열 등록
- 드라이버 변환
- 프린터 전송
- 출력 완료
장치 문제 진단
- 장치
- 연결
- 인식
- 대기열
- 드라이버
- 순서로 확인하여 문제가 발생한 위치를 찾을 수 있음.
파일(File)
- 데이터를 저장장치에 저장하기 위한 기본 단위
- 파일 이름과 파일에 저장된 실제 데이터로 구성됨.
- 문서, 사진, 음악, 프로그램 등 다양한 데이터를 파일로 저장함.
폴더(Folder)
- 파일과 다른 폴더를 분류하고 정리하기 위한 공간
- 하나의 폴더 안에 여러 파일과 하위 폴더를 둘 수 있음.
폴더 트리
-
폴더 안에 다른 폴더가 포함되는 계층 구조
-
예시
-
학기
-
과목
-
주차
- 과제.txt
-
-
-
-
자료가 많아질수록 일정한 계층 구조를 사용하는 것이 관리에 유리함. 
**경로(Path)**
- 파일이나 폴더가 저장된 위치를 나타내는 표현
- 폴더를 순서대로 따라가면서 원하는 파일의 위치를 나타냄.
- 같은 이름의 파일이라도 서로 다른 폴더에 존재할 수 있으므로 경로를 통해 구분할 수 있음.
절대 경로
-
파일의 위치를 최상위 위치부터 모두 표시하는 방법
-
현재 작업 위치와 관계없이 같은 파일을 가리킴.
-
예시
- Windows:
C:\Users\학생\Documents\과제.txt - Linux:
/home/student/Documents/과제.txt
- Windows:
상대 경로
-
현재 위치를 기준으로 파일이나 폴더의 위치를 나타내는 방법
-
현재 작업 위치에 따라 같은 상대 경로가 다른 파일을 가리킬 수 있음.
-
예시
./과제.txt../자료/과제.txt
경로에서 사용하는 표현
-
.→ 현재 폴더 -
..→ 상위 폴더 - Windows는 일반적으로
\를 경로 구분자로 사용 - Linux/macOS는
/를 경로 구분자로 사용
파일 이름과 확장자
-
파일 이름 뒤의 확장자는 파일의 종류를 구분하는 데 사용됨.
-
예시
-
.txt→ 텍스트 -
.jpg→ 이미지 -
.mp3→ 음악 -
.mp4→ 영상 -
.exe→ 실행 파일
-
-
확장자만 변경한다고 실제 파일 형식이 변하는 것은 아님.
파일 시스템(File System)
- 저장장치에 파일과 폴더를 저장하고 관리하기 위한 운영체제의 규칙과 구조
- 파일의 이름, 위치, 크기, 권한 등의 정보를 관리함.
- 운영체제가 저장장치의 데이터를 파일과 폴더 형태로 사용할 수 있도록 함.
파일 시스템의 역할
- 파일 생성과 삭제
- 파일 읽기와 쓰기
- 폴더 구조 관리
- 저장 공간 관리
- 파일 위치 관리
- 파일 권한 관리
파일의 메타데이터
-
파일 자체의 내용이 아니라 파일을 관리하기 위한 정보
-
예시
- 파일 이름
- 파일 크기
- 생성 시간
- 수정 시간
- 소유자
- 접근 권한
파일과 실제 저장 위치
- 사용자는 파일 이름과 경로를 이용하여 파일에 접근함.
- 운영체제와 파일 시스템은 해당 파일의 실제 데이터가 저장장치의 어느 위치에 있는지 관리함.
- 사용자가 저장장치의 물리적인 위치를 직접 관리할 필요가 없음.
대표적인 파일 시스템
-
NTFS
- Windows에서 주로 사용
-
FAT32
- 다양한 운영체제와 장치에서 높은 호환성을 가짐.
-
exFAT
- USB 메모리나 외장 저장장치 등에 많이 사용
-
ext4
- Linux에서 널리 사용
파일 시스템 선택
-
저장장치의 사용 목적에 따라 적절한 파일 시스템이 달라질 수 있음.
-
고려할 요소
- 운영체제 호환성
- 파일 크기
- 저장장치 크기
- 권한 및 보안 기능
파일 접근
- 프로그램이 파일을 사용하려면 운영체제에 파일 접근을 요청함.
- 응용 프로그램이 저장장치를 직접 제어하는 것이 아니라 운영체제를 통해 접근함.
파일 열기
- 프로그램이 파일의 경로와 원하는 작업을 운영체제에 전달함.
- 운영체제가 파일의 존재 여부와 접근 권한 등을 확인함.
- 문제가 없다면 프로그램이 파일을 사용할 수 있도록 함.
파일 읽기 과정
- 프로그램에서 파일 읽기 요청
- 운영체제가 파일 시스템에 요청
- 파일 시스템이 데이터 위치 확인
- 저장장치에서 데이터 읽기
- 메모리로 데이터 전달
- 프로그램이 데이터 사용
파일 쓰기 과정
- 프로그램에서 저장 요청
- 운영체제가 데이터를 전달받음.
- 파일 시스템이 저장할 위치를 결정함.
- 저장장치에 데이터 기록
- 파일 크기와 수정 시간 등의 메타데이터 갱신
버퍼(Buffer)
- 데이터를 바로 장치에 전달하지 않고 메모리에 임시로 모아두는 공간
- 작은 데이터를 매번 저장장치에 기록하는 것보다 여러 데이터를 모아서 처리하면 효율적일 수 있음.
캐시(Cache)
- 자주 사용하는 파일 데이터를 메모리에 보관하여 저장장치에 반복적으로 접근하는 횟수를 줄임.
- 같은 데이터를 다시 사용할 때 빠르게 접근할 수 있음.
안전한 제거
- USB 등의 저장장치에 대한 쓰기 작업이 아직 끝나지 않았을 수 있음.
- 안전한 제거를 사용하면 남아 있는 쓰기 작업을 완료한 후 장치를 분리할 수 있음.
- 기록 중 장치를 갑자기 제거하면 데이터 손상이나 파일 시스템 오류가 발생할 수 있음.
파일 권한
- 어떤 사용자나 프로그램이 파일에 어떤 작업을 할 수 있는지 정하는 규칙
- 운영체제가 파일과 폴더에 대한 접근을 통제함.
기본 권한
-
읽기(Read)
- 파일의 내용을 확인할 수 있는 권한
-
쓰기(Write)
- 파일의 내용을 수정할 수 있는 권한
-
실행(Execute)
- 프로그램이나 파일을 실행할 수 있는 권한
사용자와 권한
- 운영체제는 사용자 계정을 구분하여 각 사용자에게 서로 다른 권한을 부여할 수 있음.
- 모든 사용자가 모든 파일에 접근할 수 있도록 하면 중요한 데이터가 변경되거나 삭제될 위험이 있음.
최소 권한 원칙
- 사용자나 프로그램에는 작업을 수행하는 데 필요한 최소한의 권한만 부여하는 것이 안전함.
- 필요 이상의 관리자 권한을 사용하면 문제가 발생했을 때 피해 범위가 커질 수 있음.
관리자 권한
- 시스템 설정 변경이나 중요한 파일 수정 등 일반 사용자보다 많은 작업을 수행할 수 있음.
- 강력한 권한을 가지므로 필요한 경우에만 사용하는 것이 안전함.
권한과 시스템 보호
- 일반 프로그램이 운영체제의 중요한 영역을 마음대로 수정하지 못하도록 제한
- 사용자별 파일 접근 제한
- 시스템 파일 보호
- 허용되지 않은 프로그램의 접근 제한
파일 삭제
- 파일을 삭제했다고 해서 저장장치에서 데이터가 항상 즉시 완전히 사라지는 것은 아님.
- 운영체제와 파일 시스템은 해당 파일이 사용하던 공간을 다시 사용할 수 있는 공간으로 표시할 수 있음.
휴지통
- 일반적인 파일 삭제에서는 파일을 바로 완전히 제거하지 않고 휴지통으로 이동할 수 있음.
- 사용자가 실수로 삭제한 파일을 복원할 수 있도록 함.
영구 삭제
- 휴지통을 거치지 않고 삭제하거나 휴지통을 비우면 일반적인 방법으로 복원하기 어려워짐.
- 그러나 저장 공간이 새로운 데이터로 덮어쓰이지 않았다면 복구 프로그램으로 일부 데이터를 복구할 가능성이 있을 수 있음.
덮어쓰기
- 삭제된 파일이 사용하던 저장 공간에 새로운 데이터가 기록되는 것
- 덮어쓰기가 진행될수록 기존 데이터의 복구 가능성이 낮아짐.
삭제 후 주의할 점
- 중요한 파일을 실수로 삭제했다면 해당 저장장치의 사용을 가능한 한 줄이는 것이 중요함.
- 새로운 파일을 계속 저장하면 삭제된 데이터 영역이 덮어써질 수 있음.
백업
- 중요한 데이터를 다른 저장장치나 위치에 복사하여 보관하는 것
- 파일 손상, 실수로 인한 삭제, 저장장치 고장 등에 대비할 수 있음.
사용자 계정
- 운영체제가 사용자를 구분하기 위한 정보
- 사용자마다 자신의 파일, 설정, 권한 등을 가질 수 있음.
인증(Authentication)
-
현재 접근하려는 사람이 실제 해당 계정의 사용자인지 확인하는 과정
-
예시
- 비밀번호
- PIN
- 지문
- 얼굴 인식
인증과 권한
-
인증
- 사용자가 누구인지 확인
-
권한
- 인증된 사용자가 무엇을 할 수 있는지 결정
-
로그인했다고 해서 모든 작업을 수행할 수 있는 것은 아님.
일반 사용자와 관리자
-
일반 사용자
- 일상적인 프로그램 실행과 파일 작업 등을 수행
- 시스템 전체에 영향을 주는 작업은 제한될 수 있음.
-
관리자
- 프로그램 설치
- 시스템 설정 변경
- 사용자 관리
- 중요한 시스템 작업 등을 수행할 수 있음.
계정 분리
- 여러 사용자가 같은 컴퓨터를 사용하더라도 계정을 분리하면 각 사용자의 파일과 설정을 구분하여 관리할 수 있음.
- 사용자별 접근 권한을 다르게 설정할 수 있음.
운영체제 보안
- 운영체제는 프로그램과 사용자가 시스템 자원에 접근하는 것을 통제함.
- 중요한 시스템 자원이 임의로 변경되는 것을 방지함.
보호해야 하는 자원
- CPU
- 메모리
- 파일
- 장치
- 사용자 정보
- 시스템 설정
프로세스 격리
- 각 프로세스가 독립적인 메모리 공간을 사용하도록 관리함.
- 한 프로그램이 다른 프로그램의 메모리를 임의로 읽거나 수정하는 것을 제한함.
- 프로그램 오류가 시스템 전체로 확산되는 것을 줄임.
권한 검사
- 파일이나 장치 등에 접근할 때 해당 작업을 수행할 권한이 있는지 운영체제가 확인함.
- 권한이 없다면 접근을 거부함.
사용자 모드와 커널 모드
- 일반 응용 프로그램은 제한된 사용자 모드에서 실행됨.
- 중요한 시스템 기능은 높은 권한을 가진 커널 모드에서 실행됨.
- 프로그램은 필요한 기능을 시스템 호출을 통해 운영체제에 요청함. 
**업데이트**
- 운영체제와 프로그램에서 발견된 오류와 보안 취약점을 수정하기 위해 업데이트를 제공함.
- 오래된 운영체제를 계속 사용하면 알려진 보안 문제에 노출될 가능성이 커질 수 있음.
안전한 사용
- 운영체제와 프로그램을 최신 상태로 유지
- 필요한 경우에만 관리자 권한 사용
- 출처를 알 수 없는 프로그램 실행 주의
- 중요한 데이터 백업
- 계정과 파일의 접근 권한 확인
문제 진단
- 컴퓨터가 느리거나 프로그램이 정상적으로 동작하지 않을 때 원인을 단계적으로 확인해야 함.
- 무조건 재설치하거나 파일을 삭제하기보다 문제 발생 위치를 먼저 파악하는 것이 중요함.
시스템이 느릴 때 확인할 요소
- CPU 사용률
- 메모리 사용률
- 저장장치 사용률
- 실행 중인 프로세스
- 시작 프로그램
- 네트워크 사용량
CPU 사용률이 높은 경우
- 특정 프로그램이 CPU를 지나치게 사용하고 있는지 확인
- 불필요한 프로그램 종료
- 백그라운드 작업 확인
메모리가 부족한 경우
- 많은 프로그램이나 브라우저 탭이 실행되고 있는지 확인
- RAM 사용량 확인
- 스왑이나 페이지 교체가 과도하게 발생하는지 확인
- 불필요한 프로그램 종료
저장장치가 느린 경우
- 저장장치 사용률 확인
- 파일 복사나 업데이트 등의 작업 확인
- 저장 공간 부족 여부 확인
프로그램이 응답하지 않는 경우
- CPU를 계속 사용하고 있는지 확인
- 입출력 작업을 기다리고 있는지 확인
- 메모리 부족 여부 확인
- 필요한 경우 프로그램 종료 후 다시 실행
장치가 동작하지 않는 경우
- 장치 연결 확인
- 운영체제의 장치 인식 여부 확인
- 드라이버 상태 확인
- 작업 대기열 확인
- 장치 자체의 문제 확인
문제 진단의 기본 원칙
- 증상 확인
- 어떤 자원이 부족하거나 문제가 있는지 확인
- 원인 후보를 좁힘.
- 한 번에 하나씩 변경
- 변경 후 결과 확인
- 필요하면 원래 설정으로 복구
운영체제의 핵심 역할
- 운영체제는 컴퓨터의 여러 자원을 관리하고 응용 프로그램이 안전하게 사용할 수 있도록 중재함.
CPU 관리
- 여러 프로세스에 CPU 시간을 배분
- 스케줄링
- 문맥 교환
- 멀티태스킹 지원
메모리 관리
- 프로세스별 메모리 공간 제공
- 가상 메모리 관리
- 페이지와 페이지 테이블 관리
- 메모리 보호
- RAM 부족 시 페이지 교체와 스왑 수행
파일 관리
- 파일과 폴더 관리
- 경로 관리
- 파일 시스템을 이용한 저장 공간 관리
- 읽기와 쓰기
- 접근 권한 관리
장치 관리
- 장치 드라이버를 이용하여 하드웨어 제어
- 인터럽트와 DMA 등을 이용하여 효율적으로 입출력 처리
- 버퍼링, 캐싱, 스풀링 등을 이용하여 장치 간 속도 차이를 조정
보안 관리
- 사용자 인증
- 접근 권한 확인
- 사용자 모드와 커널 모드 분리
- 프로세스와 메모리 보호
- 중요한 시스템 자원 보호
운영체제가 없다면
- 프로그램이 CPU 사용을 직접 조정해야 함.
- 프로그램이 메모리 위치를 직접 관리해야 함.
- 각 프로그램이 장치마다 서로 다른 제어 방법을 구현해야 함.
- 파일 저장 구조와 접근 권한도 직접 처리해야 함.
- 여러 프로그램을 동시에 안전하게 실행하기 어려워짐.
운영체제의 의미
- 단순히 프로그램을 실행하는 소프트웨어가 아니라 CPU, 메모리, 저장장치, 파일, 입출력장치 등의 자원을 통합적으로 관리하는 핵심 시스템 소프트웨어
- 하드웨어의 복잡한 세부 사항을 응용 프로그램에서 직접 처리하지 않아도 되도록 공통된 사용 환경을 제공함.
- 여러 프로그램과 사용자가 컴퓨터의 자원을 효율적이고 안전하게 사용할 수 있도록 관리함.
1. 음악을 들으며 사진을 찍을 떄 OS의 역할은?
- 여러 작업에 CPu와 메모리 자원을 배정하고 각 작업이 충돌하지 않게 관리
2. 부팅 다섯 단계를 순서대로 배열해 보세요
- 펌웨어 점검 -> 부팅장치 -> 부트 로더 -> 커널 -> 로그인
3. RAM 부족부터 지연까지 화살표로 설명해 보세요
- RAM 부족 -> 저장장치의 페이지 파일 사용 -> 페이지 교환 증가 -> 응답 지연
4. 인쇄 버튼부터 종이 출력까지의 경로는?
- 문서 앱 -> 운영체제 -> 인쇄 대기열 -> 드라이버 -> 프린터
5. 과제 파일의 경로를 설명해보세요.
- 학기, 과목, 주차, 과제.txt
- 절대경로: 최상위 위치부터 파일까지의 천제 경로
- 상대경로: 현재 위치를 기준으로 나타낸 경로
6. 편집본, 배포본, 표 데이터의 형식은?
- 편집본: 수정 가능한 원본 형식
- 배포본: PDF와 같은 배포용 형식
- 표 데이터: 표 구조에 맞는 형식을 사용
7. 자신의 과제 파일명을 규칙에 맞게 바꿔보세요
- 260928_컴퓨터개론_4주차_v03
8. USB 복사, 폴더 이동, 실수, 삭제를 어떻게 확인할까?
- 복사 - 원본과 사본이 모두 있는지 확인
- 이동 - 파일의 위치가 변경되었는지 확인
- 삭제 - 휴지통이나 삭제된 위치 확인
9. 이름 모르는 지난주 PDF를 찾는 세 조건은?
- 파일 형식(PDF), 수정 날짜, 파일 크기
10. 팀 과제 폴더의 대상별 권한 정하기
- 팀원: 읽고 쓰기
- 뷰어: 읽기
11. 새 앱 설치 전 다섯 가지 점검은?
- 출처 및 게시자, 요청 권한, 부가프로그램, 저장공간, 호환성
12. 과제 폴더의 3-2-1 계획을 그려 보세요.
- 원본 1개 복사본 2개 총 3개의 파일을 2개의 저장 매체에 각각 1개씩 저장.
13.멈춤부터 안전한 해결까지 순서를 말해 보세요.
- 증상 확인 후 CPU, 메모리, 디스크, 네트워크 사용량 확인 -> 문제를 일으키는 프로세스 확인 - > 안전하게 종료(필요시)