공부해보잠
운영체제의 실제 본문
UNIX의 개요 및 특징
- 1960년대 AT&T 벨(Bell)연구소, MIT, General Electric이 공동 개발한 운영 체체 입니다
- 초기에는 대평 컴퓨터용 운영체제로 설계, 이후 다양한 컴퓨터 환경에 적합하도록 발전
특징
시분할 시스템(Time Sharing System)을 위한 대화식 운영체제:
- 여러 사용자가 동시에 시스템을 사용하고, CPU와 자원을 효율적으로 나누어 사용할 수 있도록 설계되었습니다.
개방형 시스템(Open System):
- 소스 코드가 공개되어 있어 사용자와 개발자가 자유롭게 수정 및 배포할 수 있습니다.
높은 이식성(Portability):
- 대부분 C언어로 작성되어 있어 다양한 하드웨어 플랫폼에서 쉽게 이식이 가능합니다.
작고 이해하기 쉬운 구조:
- 운영체제의 크기가 작아 학습과 사용이 용이하며, 유지보수 및 확장이 쉬운 설계로 되어 있습니다.
다중 사용자(Multi-User) 지원:
- 여러 사용자가 동시에 시스템 자원을 공유하고 사용할 수 있습니다.
다중 작업(Multi-Tasking) 지원:
- 여러 작업을 동시에 실행할 수 있어 높은 효율성과 생산성을 제공합니다.
네트워킹 기능이 뛰어남:
- 다양한 네트워크 관련 기능과 유틸리티를 제공하여 통신망(Network) 관리에 적합한 운영체제입니다.
트리 구조의 파일 시스템:
- 계층적인 디렉터리 구조를 통해 파일을 관리하며, 각 파일은 루트 디렉터리에서 시작하는 경로로 식별됩니다.
전문적인 프로그램 개발에 용이:
- 강력한 개발 도구와 편집기를 제공하여 프로그램 개발 환경으로 많이 활용됩니다.
다양한 유틸리티 프로그램 제공:
- 파일 관리, 프로세스 관리, 네트워크 관리 등 다양한 작업을 지원하는 유틸리티 프로그램이 내장되어 있습니다.
UNIX의 활용분야
서버 운영:
- 안정성과 확장성 덕분에 웹 서버, 데이터베이스 서버 등 다양한 서버 환경에서 사용.
프로그램 개발:
- C언어 및 기타 프로그래밍 언어 개발 환경으로 적합.
네트워크 관리:
- 강력한 네트워킹 기능으로 IT 인프라 관리에 자주 사용.
교육 및 연구:
- 소스 코드의 가독성과 개방성으로 운영체제 및 시스템 연구에 널리 활용.
UNIX시스템의 구성
커널(Kernel) :
- UNIX 시스템의 핵심적인 부분으로, 하드웨어와 소프트웨어 간의 중재자 역할을 수행
특징:
- 컴퓨터가 부팅될 때 주기억장치(RAM)에 적재된 후 상주하며 실행
- 하드웨어를 보호하고, 사용자 프로그램이 하드웨어에 직접 접근하지 못하도록 관리
기능:
프로세스 관리:
- CPU 스케줄링 및 프로세스 간의 자원 할당.
기억장치 관리:
- 메모리 할당 및 가상 메모리 관리.
파일 관리:
- 파일의 생성, 삭제, 저장, 접근 등.
입출력 관리:
- 입출력 장치와 데이터를 효율적으로 처리.
프로세스 간 통신(IPC):
- 파이프, 메시지 큐, 공유 메모리 등을 통한 프로세스 간 데이터 교환.
데이터 전송 및 변환:
- 네트워크 통신 및 데이터 포맷 변환.
쉘(Shell) :
- UNIX 시스템의 명령어 해석기로, 사용자와 시스템 간의 인터페이스 역할을 수행
특징:
명령어 입력:
- 사용자가 입력한 명령어를 읽고 해석하여 프로그램을 호출하거나 시스템 명령을 실행.
파일 형태로 존재:
- 주기억장치에 상주하지 않고, 보조기억장치에서 호출하여 사용.
유연성:
- 공용 쉘(Bourne Shell, C Shell, Korn Shell) 외에도 사용자가 직접 쉘을 작성하여 사용할 수 있음.
기능:
- 명령어 실행, 파이프라인 처리, 스크립트 작성 및 실행.
DOS와의 비교:
- DOS의 COMMAND.COM과 유사하지만, UNIX 쉘은 더 강력하고 다양한 기능을 제공.
유틸리티 프로그램(Utility Program)
- UNIX 시스템에서 제공하는 응용 프로그램으로, 사용자가 특정 작업을 수행할 때 도움을 줍니다.
특징:
- DOS의 외부 명령어에 해당하는 기능을 수행.
- 사용자의 편의를 위해 다양한 도구와 명령어를 제공.
유형:
에디터(Editor):
- 텍스트 편집 도구.
- 예: vi, nano, emacs.
컴파일러(Compiler):
- 고급 언어로 작성된 코드를 기계어로 번역.
- 예: gcc, clang.
인터프리터(Interpreter):
- 명령어를 한 줄씩 해석하여 실행.
- 예: Python, Perl 인터프리터.
디버거(Debugger):
- 프로그램의 오류를 찾고 수정하는 도구.
- 예: gdb.
구성요소 간 관계
커널: 시스템의 핵심 관리자로 하드웨어와 소프트웨어 간의 모든 상호작용을 관리.
쉘: 사용자가 커널과 상호작용할 수 있도록 돕는 명령어 해석기.
유틸리티 프로그램: 쉘과 함께 사용되며, 사용자의 작업을 지원하는 다양한 도구 제공.
UNIX 파일 시스템의 구조
- UNIX 파일 시스템은 디스크 블록(Disk Block)을 기반으로 설계된 계층적 구조로, 파일과 디렉터리를 효율적으로 관리하기 위해 설계되었습니다
- 각 구성 요소는 특정 역할을 담당하며, 파일과 데이터의 저장 및 관리를 지원합니다.
구조 구성
부트 블록 (Boot Block):
위치: 디스크의 첫 번째 블록.
역할:
- 시스템 부팅에 필요한 부트 로더(Boot Loader)가 저장됩니다.
- 운영체제가 로드될 때 가장 먼저 읽혀 실행됩니다.
특징:
- 파일 시스템의 구성 요소와는 독립적으로 동작.
- 시스템 부팅 과정에서만 사용됩니다.
슈퍼 블록 (Super Block):
위치: 부트 블록 다음에 위치.
역할:
- 파일 시스템의 전체적인 정보를 저장.
- 예: 파일 시스템의 크기, 사용 가능한 블록 수, I-node 수 등.
특징:
- 파일 시스템의 메타데이터를 관리.
- 파일 시스템의 무결성을 유지하고, 오류 복구에 중요한 역할을 합니다.
I-node (Index-node) 블록:
위치: 슈퍼 블록 다음에 위치.
역할:
- 파일에 대한 메타데이터(속성)와 데이터를 가리키는 포인터를 저장.
저장 정보:
- 파일 크기, 소유자, 권한, 생성 및 수정 시간, 데이터 블록 주소 등.
특징:
- 파일 시스템에서 각 파일과 디렉터리에 대해 고유한 I-node를 할당.
- 파일의 실제 데이터는 데이터 블록에 저장되며, I-node는 이를 참조.
데이터 블록 (Data Block):
위치: I-node 블록 뒤에 위치.
역할:
- 파일의 실제 데이터가 저장되는 영역.
특징:
- 데이터를 저장하기 위해 사용되는 디스크의 주요 공간.
- 파일의 크기에 따라 하나 이상의 데이터 블록을 할당받을 수 있음.
UNIX 파일 시스템의 흐름
파일 시스템이 데이터를 읽거나 쓸 때:
- 슈퍼 블록에서 파일 시스템 상태를 확인.
- I-node를 통해 파일의 속성과 데이터 블록 위치를 파악.
- 데이터 블록에 접근하여 실제 데이터를 읽거나 씀.
파일 생성 과정:
- 새로운 I-node를 할당받고, 파일의 속성을 설정.
- 데이터 블록을 할당받아 파일의 내용을 저장.
구성 요소 간의 관계
- 부트 블록은 시스템 시작 시 사용되며, 파일 시스템 운영에는 관여하지 않습니다.
- 슈퍼 블록은 파일 시스템의 상태와 정보를 관리하며, 파일의 저장과 접근에 필요한 정보 제공.
- I-node는 파일과 디렉터리의 속성을 관리하며, 데이터 블록과 연결.
- 데이터 블록은 파일의 실제 내용을 저장.
UNIX/LINUX 기본 명령어
CLI 기본 명령어 : 쉘(Shell)에 명령어를 입력하여 작업을 수행하는 것으로 UNIX/LINUX의 주요 기본명령어는 다음과 같습니다
명령어 | 기능 |
fork | 새로운 프로세스를 생성한다(하위 프로세스 호출, 프로세스 복제 명령) |
exec | 새로운 프로세를 수행한다 |
kill | 프로세스를 제거한다 |
& | 백그라운드 처리를 위해 명령의 끝에 입력한다 |
ps | 현재 작업중인 프로세스의 상태 정보를 확인한다. |
cp | 파일을 복사한다 |
mv | 파일을 이동시키거나 이름을 변경한다 |
rm | 파일을 삭제한다 |
cat | 파일 내용을 화면에 표시한다 |
chmod | 파일의 보호 모드를 설정하여 파일의 사용 허가를 지정한다 |
mkfs | 파일 시스템을 생성한다 |
ls | 현재 디렉터리 내의 파일 목록을 확인한다 |
finger | 사용자 정보를 표시한다 |
chown | 소유자를 변경한다. |
GUI 기본 명령어 : UNIX와 LINUX는 기본적으로 CLI를 기반으로 운영되는 시스템이지만 X Window라는 별도의 프로그램을 설치하여 GUI방식으로 운영할 수 있다.
Windows의 개요
Windows는 1990년대 Microsoft사가 개발한 그래픽 사용자 인터페이스(GUI) 기반의 운영체제입니다.
Window의 주요 특징
GUI (Graphical User Interface, 그래픽 사용자 인터페이스):
- 시각적 요소를 기반으로 시스템과 상호작용 가능.
- 아이콘, 버튼, 드래그 앤 드롭, 메뉴를 사용하여 명령어 없이 작업 수행.
- 사용자 친화적이며 초보자도 쉽게 사용할 수 있음.
선점형 멀티태스킹 (Preemptive Multi-Tasking):
- 여러 작업(프로세스)을 동시에 실행 가능.
- 운영체제가 CPU 시간을 프로세스 간에 자동으로 분배.
- 특정 작업이 시스템을 독점하지 못하도록 제어하여 안정성 제공.
PNP (Plug and Play):
- 하드웨어 자동 인식 및 설정 기능.
- 새로운 장치를 연결하면, 사용자가 별도로 설정하지 않아도 자동으로 인식 및 설치 가능.
- 예: USB 메모리, 프린터, 외장 하드디스크.
OLE (Object Linking and Embedding, 개체 연결 및 포함):
- 애플리케이션 간 데이터 공유 및 상호작용 기능.
- 한 프로그램에서 작성된 데이터를 다른 프로그램으로 삽입하거나 연결하여 사용할 수 있음.
- 예: Microsoft Word 문서에 Excel 표를 삽입하거나 업데이트.
Windows 기본 명령어
CLI기본 명령어 : 명령 프롬프트(Command)창에 명령어를 입력하여 작업을 수행하는 것으로 주요 기본명령어는 다음과 같습니다.
명령어 | 기능 |
DIR | 파일 목록을 표시한다 |
COPY | 파일을 복사한다 |
TYPE | 파일의 내용을 표시한다 |
REN | 파일의 이름을 변경한다 |
DEL | 파일을 삭제한다 |
MD | 디렉터리를 생성한다 |
CD | 디렉터리의 위치를 변경한다 |
CLS | 화면의 내용을 지운다 |
ATTRIB | 파일의 속성을 변경한다 |
FIND | 파일을 찾는다 |
CHKDSK | 디스크 상태를 점검한다 |
FORMAT | 디스크 표면을 트랙과 섹터로 나누어 초기화한다 |
MOVE | 파일을 이동한다 |
GUI 기본명령어 : 바탕화면이나 Windows 탐색기에서 마우스로 아이콘을 더블클릭하여 프로그램 실행, 파일의 복사 및 이동, 제어판의 기능 실행 등 모든 작업이 GUI명령어에 해당한다.
출저 및 참고
정보처리 산업기사 기본서(시나공)