포스트

29. 운영체제 기초 활용 1

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) 권한

권한 별 값

구분설명
R4읽기 권한
W2쓰기 권한
X1실행 권한
-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를 구동시키는 것을 해킨토시라 함

이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.