운영체제
태그 :
- 개념
- 컴퓨터와 사용자간의 중계역할을 하는 소프트웨어 사용자와 하드웨어 사이에서 사용자가 하드웨어를 손쉽게 활용할 수 있도록 하고, 컴퓨터 자원을 효율적으로 관리해주는 중개자 역할을 하는 소프트웨어
I. 운영체제(Operating System)의 개요
가. 운영체제의 정의
- 컴퓨터와 사용자간의 중계역할을 하는 소프트웨어
- 사용자와 하드웨어 사이에서 사용자가 하드웨어를 손쉽게 활용할 수 있도록 하고, 컴퓨터 자원을 효율적으로 관리해주는 중개자 역할을 하는 소프트웨어
나. 운영체제의 목적
- 편의성: 사용자에 컴퓨터 시스템 사용의 편리함 제공. 개인 PC에서 중요한 특성
- 효율성: 컴퓨터 시스템의 효율적 운영. 다수 사용자 고유 시스템에서 중요한 특성
다. 운영체제의 기능
구분 |
설명 |
자원할당 |
CPU사용시간, 메모리공간, 파일저장공간 |
제어프로그램 |
입출력장치의 제어, 사용자 프로그램의 제어 |
사용자 편의 제공 |
컴퓨터에 대한 깊은 지식없이 컴퓨터를 사용 가능하게 함 |
프로세스 관리 |
한 시스템 내의 기본 작업단위인 Process들을 효율적으로 관리 |
파일 관리 |
시스템 내의 디렉토리 및 파일의 생성/제거 |
입출력 시스템 관리 |
입출력 장치별로 제공되는 디바이스 드라이버 통해 다양한 입출력 시스템 관리 |
보조메모리 관리 |
디스크/테이프 등 2차 저장장치의 스케쥴링 및 공간할당 관리 |
네트워킹 |
네트워크 접근을 파일접근으로 일반화하여 다양한 시스템간 통신관리 |
자원보호 |
정의한 시스템 자원에 대해 프로세스 또는 사용자접근 제어 |
II. 운영체제(OS)의 구성요소와 역할
가. 프로세스
- 시스템에서의 작업 단위 : 프로그램이 실행되는 형태
- 프로세스의 생성과 소멸, 중지와 재개, 프로세스의 동기화
나. 프로세스 종류
- 메모리 관리: 비트, 바이트 단위로 저장, 어드레스를 가짐(사용되고 있는 메모리 현황 파악, 메모리 할당 및 메모리 반환)
- 보조기억장치 관리: 주 메모리의 크기 및 휘발성 때문에 보조기억장치 사용(디스크 공간 관리, 저장공간 할당, 디스크 스케쥴링)
- 입/출력(I/O)시스템: H/W에 대한 지식 없이 I/O 시스템을 이용(Buffer Caching System, 일반적인 장치 구동기 코드)
- 파일 관리 : 파일/디렉토리의 생성과 삭제, 디스크 장치에 대한 파일의 변환, 파일의 백업 지원
- 보호 시스템 : 프로세스 보호, 파일 보호
다. 네트워킹
라. 명령해석 시스템
- 사용자의 명령을 해석하여 시스템에 전달 : Dos, Unix Shell
마. 운영체제 역할
구분 |
역할 |
내용 |
---|---|---|
사용자 |
프로그램 수행 |
프로그램을 메모리에 적재하여 실행 |
입출력 연산 |
입출력 장치별 |
|
파일시스템 조작 |
파일을 생성, 삭제하고 읽기/쓰기 수해 |
|
통신 |
프로세스간 정보 교환 지원 |
|
오류탐지 |
다양한 H/W, S/W에서 발생되는 오류 탐지 및 복구 지원 |
|
시스템 |
자원할당 |
다수 사용자나 작업들이 동시에 실행될 때, 이들 각각에 대한 자원 제공 |
Accounting |
사용되는 정보자원의 횟수 및 양을 측정, 사용통계 제공 |
|
보호 |
소유자 이외에는 정보의 사용 통제 수행 |
III. 대표적인 운영체제간 비교
구분 |
Linux |
Unix |
NT |
실행환경 모델 |
C/S Computing, 객체 지향 |
호스트 중심, 단말 컴퓨터 |
C/S Computing, 객체 지향 |
주요 용도 |
Internet Server |
기간 MS 시스템 |
File Server, Internet Server |
기본 사용 환경 |
다중 사용자 환경 |
다중 사용자 환경 -Dummy, X-Terminal |
범용 Workstation의 사용자를 서버에 연결 |
운영체제 기반 |
커널 |
커널 |
마이크로 커널 |
사용 플랫폼 |
중형 이하 PC 서버 |
중형 컴퓨터 이상 |
중형 이하 PC 서버 |
UI |
불편 |
CDE (Common Desktop Environment) |
우수 (Windows Interface) |
가격 |
쌈 |
비쌈 |
비쌈 |
응용 S/W |
적음 |
보통 |
많음 |
소스 코드 |
공개 |
비공개 |
비공개 |
특징 |
-적은 비용으로 구축 가능 -소스코드 공개 - 진정한 Multi Tasking -Real Time Pageload - 완벽한 Unix 호환 |
- OSF의 DCE RPC 표준과 호환 - 분산된 자원의 공유 능력 탁월 - 다양한 DB 지원 - 강력한 TCP/IP 네트워킹 |
- OS와 API의 명확한 통제 - 강력한 파일 시스템 - Window Interface로 PC와 동일 - Windows 2000으로 Version Up 됨 |
IV. 기업의 효과적인 운영체제 선정을 위한 고려 요소
고려요소 |
내용 |
대표운영체제 |
실시간성 |
기업에서 제공하고자 하는 서비스의 시간적 제약(Deadline) 고려 |
RTOS |
목적성 |
특수 목적 소형기기 |
Embedded OS |
보안성 |
기업 보안 수준 고려한 운영체제 |
Secure OS |
도입비용 |
운영체제 전사도입비용 측면, 고개 S/W |
Linux 계열 |
[유닉스(Unix)]
I. 운영체제(OS)의 구성요소와 역할
가. 유닉스(UNIX)의 정의
- 미국 Bell 연구소의 CSRG(Computer Science Research Group)서 Multics OS를 대체하기 위해 개발된 OS로 C언어 출현 후 C+Assembly로 개발된 범용의 OS
나. UNIX의 특징
- 대화식 운영 체제이며 다중 작업(Multi-Tasking)이 가능
- 다중 사용자(Multi-User), Multi-Tasking 환경, 계층적 파일 시스템
- 이식성(Portability)과 확장성
- 다양한 소프트웨어 개발 툴(Tool: 컴파일러, 디버거 및 문서 편집 기능, 사용자 및 컴퓨터 간의 통신 기능)
II. UNIX개념도와 구성요소
가. UNIX의 개념도
나. UNIX의 구성요소
구분 |
설명 |
커널 (Kernel) |
- 운영 체제의 가장 핵심적인 부분으로 컴퓨터를 부팅하였을 때 보조 기억 장치로부터 주기억 장치로 옮겨짐 - 컴퓨터 시스템 자원들(디스크, 테이프, 프린터 등)을 관리하는 운영체제의 핵심적인 부분 - 항상 주기억 장치에 상주하며 프로세스 관리, 네트워크 관리, 프로세스간의 통신 등을 관리함 - 기억 장치 관리(Memory management), 프로세스 관리(Process management), 프로세스간 통신(IPC), 입출력 관리(I/O management), 파일 관리(file management) |
쉘 (Shell) |
- 사용자와 시스템과의 인터페이스로서의 역할 - 사용자입력 명령의 해석과 커널, 유틸리티를 이용한 명령어 해석기(Interpreter)를 실행 - 사용자가 프로그램을 할 수도 있는 프로그래밍 언어 - C Shell, Borne Shell, Korn Shell로 나누며 셀마다 다른 명령어 체계. |
시스템호출 |
- 시스템 호출은 크게 입출력 시스템 호출, 프로세스간 통신 시스템 호출, 프로세스 관리 시스템 호출 등 세 가지로 분류 |
파일시스템 |
- tree 형식으로 구성되며 시스템 내의 특정 디렉토리, 파일 접근과 관리가 편리 |
III. UNIX의 유형
가. 계열별
계열 |
명칭 |
System V 계열 |
- AT&T Bell Labs에서 개발된 UNIX 시스템 - AT&T와 Sun Microsystems가 이끄는 UI(Unix International) 연합 위주 |
BSD |
- 캘리포니아 주립 대학 버클리 교에서 개발된 Unix 시스템 - IBM, DEC, HP이 형성한 OSF(Open Software Foundation) 위주 |
나. 벤더별
벤더 |
명칭 |
SUN |
Solaris |
IBM |
AIX |
HP |
HP-UX |
DEC |
Untrix, OSF/1 |
[리눅스(Linux)]
I. 리눅스(LINUX)의 개요
가. LINUX의 정의
- 핀란드의 리누스 토발즈가 유닉스 기반으로 개발한 Open Source 운영체제
나. Linux의 특징
관점 |
명칭 |
활용 측면 |
- 저렴한 비용으로 이용가능 - 커뮤니티에 의한 보안 취약점의 발견, 개선과 시스템간 호환 인터페이스 제공 등 신속한 진화 - 소프트웨어의 투명한 공개를 통한 안전성 확보 |
기술 측면 |
- GNU 라이센스를 따르는 공개 OS - 한글 처리가 다소 어려움 - 문제 발새시 벤더 기술 지원의 어려움과 응용프로그램의 부족 - 멀티 태스킹(multi-tasking)과 멀티 프로세서(multi-processor)이 가능 - 멀티 플랫폼(multi-platform)에서 동작 - FAT, FAT32, EXT2 등 다ㅑ한 파일시스템 지원 - UNIX와 유사한 쉘 - 모놀리틱 커널 |
II. LINUX 커널의 특징
가. 리눅스 커널 버전
- 일반적으로 커널 소스 파일은 linux-2.4.20.tar.gz와 같은 형태로 표시
- 소스의 버전은 linux-x.y.x와 같은 숫자로 명시
x: Major Version이라 칭하며, 커널 자체에 획기적인 영역이 추가 될 때 변함
y: 홀수인지 짝수인지가 중요하며, 홀수는 새로운 기능이 추가되어 개발 중인 베타버전이며, 안정버전이 되면, +1을 한 짝수로 표시.
z: 기능상 추가된 내용은 없지만 문제가 되는 버그를 수정한 횟수를 표시하는데 숫자가 높을수록 많은 버그 수정이 되었다는 것을 의미
- 소스는 ftp.kernel.org 에서 소스를 내려받을 수 있고 사용자가 임으로 수정가능.
나. 리눅스 커널의 업그레이드
- 일반적인 리눅스 배포판의 커널은 배포판을 이용하는 유저들이 어떤 하드웨어를 사용하는지 그리고 어떤 목적으로 사용할 것인지 알 수 없으므로 여러 다른 많은 종류의 하드웨어와 상당수의 설정들을 지원 하도록 설정되어 배포 됨.
- 따라서 커널 이미지의 크기가 커질 수 밖에 없고, 사용하지 않는 여타 기능들이 많이 추가 되었으므로 시스템에 최적화되지 못해 성능이 떨어지게 됨. 즉, 불필요한 기능을 커널에 포함시키거나 모듈로 설정하였을 경우 시스템이 전반적으로 무거워지고 많은 메모리를 소모하게 됨
- 또한 정작 나에게 필요한 기능은 포함되지 않는 경우가 있어 특수한 기능을 이용하거나 나에게 필요한 기능만을 선택하여 사용할 수 있돌록 하기 위해 커널 컴파일이 필요.
- 커널 컴파일의 단계
1). Linux CD, Web 등에서 현재 설치된 Kernel source 가져오기
2). 커널 소스 풀기
3). make menuconfig 실행
4). config 파일 복사
5). 설정 영역 의존성 검사(make dep)
6). 이전 커널 컴파일시 생성된 파일 삭제(make clean)
7). 커널 새성, 커널 복사, 모듈 생성, 모듈 설치
8). 모듈 의존성 파일 생성
9) grub.conf 파일 수정