29. 운영체제 기초 활용 1
기억 장치
개념
- 데이터, 프로그램, 연산의 중간 결과 등을 일시적 또는 영구적으로 저장하는 장치
종류
레지스터
중앙처리장치 내부에 존재하는 기억장치
접근 시간이 중앙처리장치의 처리 속도와 비슷
캐시 메모리 | Cache Memory
중앙처리장치가 주기억장치에 접근할 때 속도 차이를 줄이기 위해 사용
실행중인 프로그램의 명령어와 데이터를 저장
CPU와 메인 메모리 사이 위치
주기억장치
중앙처리장치가 직접 데이터를 읽고 쓸 수 있는 장치
레지스터나 캐시 메모리보다 기억 용량이 큼
ROM | Read Only Memory
- 읽기만 가능한 읽기 전용 메모리
- 비 휘발성 메모리
- 종류 : mask-ROM, PROM, EPROM, EEPROM
RAM | Random Access Memory
- 기억장소를 임의로 접근할 수 있는 메모리
- 읽고 쓰기가 가능한 휘발성 메모리
- SRAM 전원이 공급되는 중에 내용이 사라지지 않음(캐시 메모리로 사용)
- DRAM보다 접근 속도가 빠름
DRAM
- 일반적인 주기억장치로, 일정 시간이 지나면 내용이 사라지는 RAM
- 축전기(Capacitor)의 충전상태로 비트를 저장
보조기억장치 | Auxiliary Memory
주기억장치에 비해 접근 시간은 느리지만 기억 용량이 큼
종류 : HDD, SSD(Solid State Drive), CD, USB, 플로피 디스크 등
연관기억장치 | Associative Memory
- 기억된 내용의 일부를 이용하여 기억되어 있는 데이터에 직접 접근하여 정보를 읽어냄
시스템 소프트웨어
개념
응용 소프트웨어를 실행하기 위한 플랫폼 제공
컴퓨터 하드웨어를 동작하고 접근
종류
로더
어떤 프로그램을 실행하기 위해 해당 목적 프로그램을 메모리에 적재하고 배치 주소를 옮기는 프로그램
역할
- 재배치 : 주소 상수와 같이 주소에 의존하는 위치를 할당된 기억장소와 일치하도록 조정
- 할당, 연결, 적재, 재배치 등의 역할
Compile and Go Loader
- 별도의 로더 없이 언어 번역 프로그램이 로더의 역할까지 담당
Absolute Loader
- 프로그램을 지정된 장소(절대 주소)에 적재만 하는 로더
Dynamic Loading Loader
- CPU가 현재 사용 중인 부분만 로드하고 미사용 중인 프로그램은 보조기억장치에 저장해 두는 방식
링커
- 프로그램 구현 시 목적파일(Object File)을 실행파일(Execute File)로 변환해 주는 프로그램
유틸리티
- 컴퓨터 하드웨어, 운영체제, 응용 소프트웨어를 관리하는 데 도움을 주는 프로그램
번역기 | 컴파일러, 어셈블러
- 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 프로그램
장치 드라이버
- 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램
운영체제
- CPU 메모리와 하드디스크 등의 하드웨어를 관리하며, 내 컴퓨터와 다른 컴퓨터들이 대화할 수 있도록 도와주는 등 많은 일들을 해주는 프로그램
구성
제어 프로그램
감시 프로그램 | Supervisor Program
- 각종 프로그램의 실행과 시스템 전체의 작동 상태를 감시 / 감독하는 프로그램
작업 관리 프로그램 | Job Control Program
- 연속 처리를 위한 스케줄 및 시스템 자원 할당 등 담당
데이터 관리 프로그램 | Data Control Program
- 주기억 보조기억장치 사이의 자료전송, 파일 조작 및 처리, 입출력 자료와 프로그램 간의 논리적 연결 등 처리할 수 있도록 관리
처리 프로그램
서비스 프로그램 | Service Program
- 효율성을 위해 사용 빈도가 높은 프로그램
문제 프로그램 | Problem Program
- 특정 업무 해결을 위해 사용자가 작성한 프로그램
언어 번역 프로그램 | Language Translator Program
- 어셈블러, 컴파일러, 인터프리터
파일 보호 기법
파일 명명 | Naming
- 접근하고자 하는 파일 이름을 모르는 사용자를 접근 대상에서 제외
비밀번호 | Password
- 각 파일에 암호를 부여하여 제한된 사용자에게만 접근을 허용
암호화 | Cryptography
- 파일 내용을 알 수 없도록 함
접근 제어 | Access Control
- 사용자의 신원에 따라 서로 다른 접근 권한을 허용
디렉토리 구조
1단계 : 모든 파일들이 유일한 이름을 가지고 있으며, 같은 디렉토리 내에 위치하여 관리
2단계 : 중앙에 마스터 파일 디렉토리가 있고, 그 아래 사용자 파일 디렉토리가 있는 구조
트리 : 하나의 루트 디렉토리와 여러 개의 종속 디렉토리로 구성된 구조
비순환 그래프 : 파일 또는 디렉토리의 공동 사용이 가능
운영체제
개념
응용프로그램이 실행되는 과정에서 하드웨어들을 제어하여 응용프로그램을 실행시키고 실행 결과를 보일 수 있도록 컴퓨터 내부 동작을 관리하는 소프트웨어
컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
특징
여러 프로그램을 같이 실행시키면서 서로 충돌없이 실행되도록 프로그램 실행을 제어
컴퓨터 하드웨어와 프로그램 사이의 인터페이스
컴퓨터에서 발생할 수 있는 각종 오류나 예외상황을 감지하고 상위 계층에게 보고
컴퓨터 자원의 이용 현황에 대한 통계자료를 제공
기능
프로세스 관리
- 프로세스를 생성하고 실행을 제어, 관리하는 기능
메모리 관리
- 프로세스가 실행될 수 있도록 메모리 공간을 할당하고 회수하는 기능
파일 관리
- 파일을 보조기억장치에 저장하고 파일 시스템을 운영하는 기능
입출력 관리
- 컴퓨터 시스템에서의 입력과 출력을 관리하는 기능
보조기억장치 관리
- 보조기억장치의 공간을 할당하고 관리하는 기능
네트워킹
- 컴퓨터 통신에 필요한 제어 관리 기능
정보 보안 관리
- 사용자 인증 및 실행 권한 관리
명령 해석 시스템
- 사용자가 운영체제에 전달하는 명령을 해석하고 관련 함수를 실행시키는 기능
운용 기법
일괄 처리 시스템 | Batch Processing System
- 초기 운영체제의 형태로 여러 작업을 한 번에 묶어서 처리
실시간 처리 시스템 | Real time Processing System
- 요청한 실행을 즉시 실행하는 기법
다중 프로그래밍 시스템 | Multi Programming System
하나의 작업이 입출력 중일 때 다른 작업을 할당하여 CPU 사용률과 처리량을 향상
사용자 입장에서는 하나의 CPU지만 동시에 여러 프로그램이 실행되는 것처럼 보임
시 분할 시스템 | Time Sharing System
타임 슬라이스 또는 타임 퀀텀이라 부르는 일정 작업 시간 동안 작업 실행
대화식 처리가 가능하고 H/W를 보다 능률적으로 사용할 수 있는 시스템
다중 처리 시스템 | Multi-Processing System
일괄 처리, 다중 프로그래밍, 시 분할, 다중 처리, 실시간 처리시스템을 모두 혼용하여 사용
동시에 프로그램을 수행할 수 있는 CPU를 두 개 이상 두고 각각 그 업무를 분담하여 처리
분산 처리 시스템 | Distribute Processing System
- 둘 이상의 독립된 시스템이 통신으로 연결되고 상호작용하는 약 결합 방식
성능 평가 기준
처리량 | Throughput
- 일정 시간 내에 시스템이 처리하는 일의 양
반환 시간 | Turnaround Time
요청한 작업에 대하여 결과를 돌려줄 때까지 소요되는 시간
대기시간 + 실행시간 + 응답시간
신뢰도 | Reliability
- 작업의 결과가 얼마나 정확하고 믿을 수 있는가의 기준
사용 가능도 | Availability
- 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
운영체제의 종류
윈도우 | Windows
MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 운영체제
마이크로소프트사에서 개발한 운영체제
윈도우 95를 시작으로 98, ME, XP, 7, 8, 10, 11 등의 버전으로 출시
특징
GUI 제공
- 그래픽 사용자 인터페이스 제공
선점형 멀티태스킹 방식
- 동시에 여러 개의 프로그램을 실행
- 운영체제가 각 작업의 CPU 이용시간 제어
자동감지 기능 제공 | Plug and Play
- 하드웨어 설치 시, 필요한 시스템 환경을 운영체제가 자동 구성
OLE | Object Linking and Embedding 사용
- 개체를 현재 작성 중인 문서에 삽입하여 편집할 수 있게 하는 기능 제공
리눅스 | Linux
- 1991년 리누스 토발즈에 의해 오픈소스로 개발된 유닉스 호환 OS
특징
다중 사용자 시스템
- 하나의 시스템에 다수의 사용자가 동시 접근 가능
- 사용자들은 동시에 여러 프로그램 사용 가능
오픈 소스
- 커널과 내장된 응용프로그램이 공개되어 있어, 누구나 용도에 맞게 수정해서 사용 가능
파일 시스템
- 리눅스 고유의 파일 시스템 EXT2~EXT4와 FAT, FAT32등의 파일 시스템도 지원
이식성 & 유연성 & 확장성
- C언어로 개발되어, 다른 시스템에 이식 가능
다양한 배포판
- 서버, 개발용, PC용 모두 사용 가능하고, 그에 맞는 다양한 배포판이 존재
장점
유닉스와 완벽하게 호환 가능
공개 운영체제
PC용 OS보다 안정적
강력한 보안 기능
개발 환경이 풍부
단점
기술지원 부족
사용자의 숙련된 기술 필요
한글 입출력을 하는 데 어려움이 존재
유닉스 | UNIX
개요
1969년 미국 AT&T 벨 연구소가 개발한 공개형 오픈소스 운영체제
1969년 벨 연구소 소속의 켄 톰슨이 어셈블리 언어를 사용하여 개발했으며, 1972년 데니스 리치가 C언어를 사용하여 다시 작성
벨 연구소에서 개발한 운영체제로 대부분의 현대적 컴퓨터 운영 체제의 원형
윈도우를 제외한 macOS, IOS 등의 대부분의 운영체제가 유닉스를 뿌리로 함
특징
시 분할 시스템을 위해 설계된 대화식 운영체제
대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간 호환성이 높음
다중 사용자, 다중 작업을 지원
많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합
트리구조의 파일 시스템
전문적인 프로그램 개발에 용이
다양한 유틸리티 프로그램 존재
하나 이상의 작업에 대해 백그라운드에서 수행 가능
Multi-User, Multi-Tasking 지원
구성
커널 | Kernel
- UNIX의 가장 핵심적인 부분
- 컴퓨터가 부팅될 때, 주기억장치에 적재된 후 상주하면서 실행
- 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할 담당
- CPU 스케줄링, 기억장치 관리(할당, 회수), 파일 시스템 관리, 입출력 관리, 프로세스 간 통신, 프로세스 생성과 종료, 데이터 전송 및 변환 등 여러 가지 기능 수행
쉘 | Shell
- 명령어 해석기
- 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
- 시스템과 사용자 간의 인터페이스 담당
- 공통 Shell(Bourne Shell, C Shell, Krom Shell)이나, 사용자가 만든 Shell 사용 가능
Utility Program
- 일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용
- 에디터, 컴파일러, 인터프리터, 디버거 등
파일 시스템
특징
- UNIX 파일 시스템의 구조는 트리 구조
- 디렉터리나 주변장치도 모두 파일로 취급
- 파일 생성 및 삭제 기능, 보호 기능
- 파일 형식은 일반파일, 디렉터리 파일, 특수 파일 형태 제공
구조
부트 블록: 부팅 시 필요한 코드를 저장하고 있는 블록
슈퍼 블록: 전체 파일 시스템에 대한 정보를 저장하고 있는 블록
I-node 블록: 각 파일이나 디렉터리에 대한 모든 정보를 저장하고 있는 블록
데이터 블록: 실제 파일에 대한 데이터가 저장된 블록
파일 디스크립터 | File Descriptor
특징
- 유닉스 시스템에서 프로세스가 파일들을 접근할 때 이용
- 파일 제어 블록이라고도 함
- 파일 관리를 위해 시스템이 필요로 하는 정보를 가짐
- 보조기억장치에 저장되어 있다가 파일이 OPEN되면 주기억장치로 이동
- 파일마다 독립적으로 존재하며, 시스템에 따라 다른 구조를 가질 수 있음
- 사용자가 직접 참조할 수 없음
정보
- 파일 이름 및 파일 크기
- 보조기억장치에서의 파일 위치
- 파일 구조(순차파일 / 색인순차파일 / 색인파일 등)
- 액세스 제어 정보
- 파일 유형(텍스트 파일, 목적프로그램파일 등)
- 생성 날짜와 시간, 제거 날짜와 시간
- 최종 수정 날짜 및 시간
- 액세스한 횟수(파일 사용 횟수)
주요 명령어
access: 파일의 접근 가능 여부 결정
chmod: 파일 또는 디렉토리에 대한 접근권한을 변경
close: File Control Block을 닫음
chgrp: 파일의 그룹명 변경
chown: 파일의 소유자 변경
chdir: 디렉터리 변경 명령
mkdir: 디렉터리 생성 명령
rmdir: 디렉터리 삭제 명령
mount: 파일 시스템에 새로운 파일 시스템을 연결할 때 사용
unmount: 파일 시스템에서 서브 디렉터리 제거 시 사용
exit: 프로세스 종료
kill: 프로세스 제거
fork: 새로운 프로세스를 생성, 복제하는 명령
getpid: 자신의 프로세스명, 그룹명, 부 플로세스의 정보를 얻음
getppid: 부모 프로세스의 ID를 얻음
sleep: 프로세스를 일정 시간 동안 중단
uname: 현재 운영체제의 버전 정보 확인
ps: 프로세스 상태 출력
exec: 새로운 프로그램을 수행시키는 명령
vi: 편집기 명령어
cat: 파일 내용을 화면에 출력
rm: 파일이나 디렉터리 삭제
cp: 파일을 복사
mv: 파일 이동
grep: 파일이나 프로세스를 찾는 명령어
ls: 파일 목록 확인
du: 파일의 사용량 출력
finger: 사용자 정보 표시
Linux, Unix 파일 접근 권한 관리
파일 확인 방법
ls -al명령을 이용하여 파일의 상세정보 및 파일 접근 권한을 확인
필드 별 의미
- rwx rw- r--
- 1번 필드 : 타입(File or Folder or Link)
- 파일 :
-- 디렉터리 :
d- 다른 파일을 가리키는 링크 :
1- 두 개의 프로그램을 연결하는 파이프 파일 :
p- 블록 단위로 하드웨어와 반응하는 파일 :
b- 스트림 단위로 하드웨어와 반응하는 파일 :
c- 2~4번 필드 : 소유주(Owner) 권한
- 5~7번 필드 : 그룹(GROUP) 권한
- 8~10번 필드 : 나머지(OTHER) 권한
권한 별 값
| 구분 | 값 | 설명 |
|---|---|---|
| R | 4 | 읽기 권한 |
| W | 2 | 쓰기 권한 |
| X | 1 | 실행 권한 |
| - | 0 | 권한 없음 |
권한 변경
chmod 0751 file명
- 해당 파일에 대해서 소유주는 읽기, 쓰기, 실행 권한이 있음
- 해당 파일에 대해서 그룹은 읽기, 실행 권한이 있음
- 해당 파일에 대해서 나머지는 실행 권한이 있음
chmod 0775 file명
- 해당 파일에 대해서 소유주는 읽기, 쓰기, 실행 권한이 있음
- 해당 파일에 대해서 그룹은 읽기, 쓰기, 실행 권한이 있음
- 해당 파일에 대해서 나머지는 읽기, 실행 권한이 있음
umask | 접근 권한 마스크
앞으로 만들어질 파일 권한에 대한 설정
umask로 지정한 8진수는 새로 만들어질 파일에서 제거될 권한을 명시
umask 022
- 초기 파일의 권한은 666이고 디렉터리는 777
- 앞으로 만들어지는 파일은 644, 디렉터리는 755 권한을 가짐
- 소유주는 읽기, 쓰기 권한 (파일)
- 그룹은 읽기 권한 (파일)
- 나머지는 읽기 권한 (파일)
- 소유주는 읽기, 쓰기, 실행권한 (디렉터리)
- 그룹은 읽기, 실행권한 (디렉터리)
- 나머지는 읽기, 실행권한 (디렉터리)
chown | 소유주 변경
`chown yoojung file명
- 해당 파일의 소유주를 yoojung으로 변경
MacOS
애플사가 개발한 유닉스 기반의 운영체제
iOS, tvOS, watchOS 등 애플의 다른 운영체제들과 상당수의 코드베이스를 공유
SwiftUI와 함께 Cocoa, Core Foundation 등의 시스템 API를 제공
macOS는 라이선스 상으로 애플 기기 이외의 기기에서는 구동 불가
애플의 하드웨어가 아닌 다른 x86-64 컴퓨터에서 macOS를 구동시키는 것을 해킨토시라 함