운영체제
운영체제는 사용자로 하여금 컴퓨터의 하드웨어를 보다 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어 입니다.
하드웨어는 컴퓨터 장치를 제어하고 데이터를 처리하는 중앙 처리 장치, 데이터를 저장하는 기억 장치, 외부와의 통신을 담당하는 통신 장치, 데이터 입력과 출력을 담당하는 입출력 장치 등으로 구분될 수 있습니다.
즉 운영체제는 사용자 편의성을 위한 인터페이스인 동시에 다양한 자원을 관리하는 자원 관리자 입니다.
운영체제 목적
운영체제는 처리능력 향상, 반환시간 단축, 사용가능도 향상, 신뢰도 향상을 목적으로 합니다
운영체제 메모리 관리
메모리 안에는 다수의 프로그램들이 실행됩니다. 프로그램 실행 중 메모리가 꽉 차게 되면 시스템에 오류가 발생합니다
따라서 프로그램의 실행이 종료될 때까지 메모리를 가용한 상태로 유지 및 관리하는 것을 메모리 관리라 합니다.
메모리에 있는 프로그램은 중앙 처리 장치인 CPU로 이동하여 처리됩니다.
CPU는 Virtual or Logical address를, 메모리는 Physical address를 사용하는데 이를 매핑하는 것은 MMU(Memory Management Unit)가 담당합니다.
즉 메모리 관리는 CPU와 지속적으로 데이터를 송수신하는 상황에서 어떤 부분의 메모리가 현재 사용되는지,
어떤 순서로 메모리에 입출력되어야 하는지, 메모리 공간이 필요할 경우 어떻게 확보 및 제거할지에 대한 종합적인 관리입니다.
메모리 관리 기법
반입 기법
보조기억장치의 내용을 언제 주기억 장치로 적재할 것인지를 결정하는 것입니다.
- 요구 반입 : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 가져오는 것
- 예상 반입 : 요구되는 페이지 외에 시행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재
배치 기법
새로 반입되는 프로그램이나 데이터를 주기억 장치 어디에 위치에 위치시킬 것 인지를 결정하는 전략입니다.
- 최초 적합 (First Fit) : 빈 영역 중 첫 번째 분할 영역에 배치하는 방법
- 최적 적합 (Best Fit) : 빈 영역 중에서 단편화 즉 빈 영역을 적게 남기는 영역에 배치하는 방법
- 최악 적합 (Worst Fit) : 빈 영역 중에서 단편화를 많이 남기는 분할 영역에 배치하는 방법
할당 기법
실행해야 할 프로세스를 주기억 장치에 어떤 방법으로 할당할 것 인지를 결정하는 방법입니다.
- 연속 할당 기법 : 실행을 위한 각 프로세스를 주기억 장치 공간 내에서 인접하게 연속하여 저장하는 방법
- 분산 할당 기법 : 하나의 프로세스를 여러 개의 조각으로 나누어 주기억 장치 공간 내 분산하여 배치하는 기법으로 주로 가상기억장치에 사용되는 기법
교체 기법
새로 반입되는 프로세스를 주기억 장치에 배치할 때, 이미 사용되는 영역 중에서 얼마나 교체해 사용할 것 인지를 결정합니다.
- FIFO (First in First Out) : 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
- LRU (Least Recently Used) : 가장 오랫동안 참조되지 않은 페이지를 교체하는 기법
- LFU (Least Frequently Used) : 사용 빈도가 가장 적은 페이지를 교체하는 기법
프로세스관리
프로그램은 파일 형태로 저장하여 관리되다가 실행을 시키면 동작을 하게 됩니다. 이때 실행중인 프로그램을 프로세스(Process)라고 합니다. 프로세스 관리 기법에는 일시 중지, 재실행, 동기화, 통신, 교착상태 처리, 프로세스 생성 삭제 등이 있습니다.
상태
생성 : 사용자에 의해 프로세스가 생성된 상태
준비 : CPU 할당받기 위해 기다리고 있는 상태, 준비 상태 큐에서 실행을 준비하는데, 우선순위 높은 프로세스가 할당받음
실행 : 준비 상태 큐에 있는 프로세스가 CPU 할당받아 실행되는 상태 ( 준비에서 실행으로 될 때를 "디스패치"라 한다)
대기 : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도, 입출력 처리 완료 시까지 대기 리스트에서 대기 중인 상태
완료 : 프로세스가 CPU를 항당받아 주어진 시간 내에 완전히 수행을 종료한 상태
가상화, 클라우드
가상화는 물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 반대로 하나의 물리적인 리소스를 여러 개로 보이게 하는 것입니다. 대부분의 서버는 용량의 20% 정도만 사용한느데, 가상화는 서버의 가동률을 60~70% 이상으로 올릴 수 있습니다.
가상화는 크게 플랫폼 가상화와 리소스 가상화로 구분될 수 있습니다.
플랫폼 가상화는 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 마치 독립된 환경을 만들어 낸 것처럼 보여주는 것입니다
게스트 소프트웨어 위에서 사용자는 돌깁된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용할 수 있습니다
-
클라우드는 인터넷 기반에서 구동되는 컴퓨팅 기술입니다. 클라우드 컴퓨팅을 이용하면 응용 프로그램을 필요에 따라 불러 사용하고, 데이터를 손쉽게 저장 및 추출할 수 있습니다.
- IaaS (Infrastructure as a Service) : 웹상에서 구글, 마이크로소프트, 아마존 등에서 제공하는 환경의 네트워크, 보안, 데이터 저장소, 콘텐츠 딜리버리 서비스를 포함한 다양한 인프라를 임대하여 이용할 수 있는 서비스 입니다.
- Paas (Platform as a Service) : 운영체제가 이미 구성되어 있는 상태에서 사용자는 데이터와 애플리케이션만 직접 관리할 수 있는 서비스 입니다
- Saas (Software as a Service) : 인프라와 운영체제뿐만 아니라 사용할 수 있는 소프트웨어까지 갖추어져 웹상의 로그인만으로 다양한 소프트웨어를 사용한 만큼 비용을 지불해 가며 사용할 수 있는 서비스 입니다.
Windows 특징
마이크로소프트사에서 출시된 운영체제로
사용자가 컨트롤하는 마우스의 아이콘을 이용하여 소프트웨어를 실행시키는 편리한 인터페이스를 지원합니다.
고객 지원이 체계적이라는 장점이 있지만, 문제점이 발견되었을 시 수정에 시간이 걸린다는 단점이 있고, 이런 시간적인 차이를 이용하여 악성 해커들로 인하여 유닉스 계열의 운영체제에 비하여 보안에 취약하다는 문제점이 있습니다.
리눅스 / 유닉스 특징
1960년대 AT&T Bell 연구소, MIT그리고 General Electric이 공동 연구로 개발한 운영체제로
멀티태스크 기능에 초점을 맞추었으며 C 언어로 재이식되어 대중화의 기반을 마련하였습니다.
리눅스는 유닉스의 호환 커널입니다.
자유 소프트웨어(Free Software)이기 때문에 버그 발생 시 다수의 개발자가 수정에 참여하여 빠른 업데이트가 가능하지만, Windows와 같은 체계적인 지원이 상대적으로 부족하여 일반인들보다는 전문가들이 사용하고 있습니다.
현재 서버 시장과 슈퍼컴퓨터 시장에서 매우 높은 점유율을 가지고 있습니다.
기타 운영체제
매킨토시 운영체제 OS X
유닉스 기반으로 만들어져 애플사의 제품군에서만 사용기 가능한 그래픽 기반 운영체제로
프로그램을 카피하고 삭제함으로써 install과 uninstall의 과정을 단순화하였으며, 드라이버 설치 또한 OS의 확장 폴더에 넣고 재부팅을 하면 인식됩니다.
운영체제 명령어
운영체제를 제어하기 위한 방법은 CLI (Command Line Interface) 와 GUI (Graphic User Interface) 가 있습니다.
CLI는 사용자가 직접 명령어를 입력하여 컴퓨터에게 명령을 내리는 방식이며,
GUI는 마우스로 화면을 클릭하여 컴퓨터를 제어하는 방식입니다.
리눅스 명령어
pwd | 현재 디렉터리를 확인 |
cd | 현재 디렉터리를 다른 디렉터리로 이동 |
ls | 디렉터리의 내용을 출력 (-a 옵션은 숨긴 파일 포함 출력) |
mkdir | 디렉터리 생성 |
rmdir | 디렉터리 삭제 |
cat | 파일 내용을 출력 |
more | 파일 내용을 화면 단위로 출력 |
tail | 파일 뒷 부분을 몇 행을 출력 |
cp | 파일이나 디렉터리를 복사 |
mv | 파일명을 바꿈 |
rm | 파일을 삭제 |
in | 파일의 링크 생성 |
touch | 빈 파일 생성하거나 수정시간 변경 |
grep | 파일 내용 검색 |
find | 지정한 위치에서 조건에 맞는 파일을 찾음 |
chmod | 파일이나 디렉터리 접근 구너한 변경 |
chown | 파일과 디렉터리 소유자와 소유 그룹 변경 |
'개발' 카테고리의 다른 글
[정보처리산업기사 필기] 네트워크 (0) | 2023.09.18 |
---|---|
[정보처리산업기사 필기] 데이터베이스 (0) | 2023.09.11 |
[정보처리산업기사 필기] 애플리케이션 (1) | 2023.08.30 |
[정보처리산업기사 필기] 소스코드 빌드 (0) | 2023.08.30 |
[자기개발] Emotion (1) | 2023.05.29 |