Light Blue Pointer
본문 바로가기
Others/자격증 공부

03-01 운영체제 기초 활용하기

by 개발바닥곰발바닥!!! 2021. 7. 31.

01 운영체제

1) 운영체제의 정의

하드웨어를 제어하는 소프트웨어

하드웨어를 활용할 수 있도록 펌웨어나 소프트웨어로 만들어진 프로그램이다

컴퓨터 본체 및 각 주변 장치를 가장 능률적이고 경제적으로 사용할 수 있도록 하는 프로그램이다

컴퓨터를 편리하게 사용하고 하드웨어를 효율적으로 사용할 수 있도록 하는 프로그램이다

컴퓨터 자원들인 프로세서, 기억 장치, 파일 및 정보, 네트워크 및 보호 등을 효과적으로 관리할 수 있는 프로그램의 집합이다

 

2) 운영체제의 목적

컴퓨터 시스템의 처리량, 신뢰성을 최대화한다

컴퓨터 시스템의 반환 시간, 응답 시간, 처리 시간, 대기 시간, 경과 시간을 최소화한다

컴퓨터를 구성하고 있는 자원을 효율적으로 운영하고 제어한다

사용자와 컴퓨터 시스템의 인터페이스를 제공한다

제한된 자원을 효율적으로 공유하기 위해 스케쥴링한다

데이터를 공유한다

주변 장치를 관리한다

시스템의 이식성 = 호환성을 높인다

 

3) 운영체제의 역할

운영체제는 스스로 어떤 기능도 수행하지 않고 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 마련하여 준다

하드웨어와 사용자 사이에 내부 및 외부 인터페이스를 제공한다다컴퓨터 자원을 여러 사용자가 효율적으로 나누어 사용할 수 있도록 자원을 관리한다

프로세서, 프로세스, 기억 장치, 입출력 장치를 관리한다

컴퓨터를 초기화시켜 작업을 수행할 수 있는 상태로 유지시키는 역할을 한다

소프트웨어나 하드웨어에 오류가 발생하면 운영체제는 회복을 위해 활동한다

응용 프로그램들이 컴퓨터의 제한된 자원들을 공유할 수 있도록 자원을 관리한다

 

4) 운영체제의 특징

운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트ㅜ에어이다다운영체제는 사용자 편의성을 위한 인터페이스인 동시에 다양한 자원을 관리하는 자원 관리자이다

하드웨어는 컴퓨터의 장치를 제어하고 데이터를 처리하는 중앙 처리 장치, 데이터를 저장하는 기억 장치, 외부와의 통신을 담당하는 통신 장치 그리고 데이터 입력과 출력을 담당하는 입출력 장치 등으로 구분될 수 있다

커널은 프로세스 관리, 메모리 관리, 입출력관리, 파일 가ㅗㄴ리 등과 같은 운영체제의 핵심적인 기능을 모아놓은 것으로 운영체제의 성능에 중요한 역할을 한다.

 

02 운영체제의 종류별 특징

1) 윈도우 계열 운영체제의 특징

마이크로소프트사에서 1995년도에 윈도우 95를 발표한 이후 98,ME,XP,7,8,10 등의 버전으로 지속 출시하고 있다

사용자가 컨트롤하는 마우스의 아이콘을 이용하여 소프트웨어를 실행시키는 편리한 인터페이스를 지원하는 것이 특징이다

마이크로 소프트사만이 수정 및 배포할 수 있으며 고객 지원이 체계적이라는 장점을 가지고 있다

문제점이 발견되었을 시 수정에 시간이 걸린다는 단점이 있다

이런 시간적인 차이를 이용하는 악성 해커들로 인하여 유닉스 계열의 운영체제에 비해 보안에 취약하다

 

2) 리눅스/유닉스 계열 운영체제의 특징

유닉스는 1960년대 AT&T Bell연구소, MIT , General Electric이 공통 연구로 개발에 착수하여 개발한 운영체제이다

멀티태스크 기능에 초점을 맞춰서 초기 운영체제 Multics를 만들었다

C언어로 재이식되어 대중화의 기반을 마련하였고, 1970년대 SYSTEM V계열과 유닉스 시스템을 판매하게 되었다

이후 많은 변화를 거쳐 SYSTEM V계열과 BSD계열로 발전해 왔었으나, 현재는 이 둘의 장점을 통합한 버전의 유닉스가 배포되고있다

IBM의 사용 운영체제인 AIX, 오라클의 솔라리스,HP의 UX가 그 예이다

리눅스는 유닉스의 호환 커널이다

1991년 리누스 토발즈는 자유 소프트웨어 정책 하에서 완전히 자유롭고 재배포가 가능한 운영체제인 리눅스를 만들었다

자유 소프트웨어란 금전적 무료가 아닌 원하는 대로의 실행, 무료나 유로로 복제물 재배포, 필요에 따른 개작 등 포괄적인 자유를 부여하는 것을 의미한다

리눅스는 수천 명 이상의 개발자들이 코드를 보고 update를 하고 있다

따라서 버그 발생 시 다수의 개발자가 수정에 참여하여 빠른 업데이트가 가능하지만, 윈도우와 같은 체계적인 지원이 상대적으로 부족하여 일반인들보다는 전문가들이 사용하고있다

리눅스는 데비안, 레드햇, Fedora, Ubuntu, Cent OS와 같이 다양한 버전으로 다양한 회사에서 출시되고 있어 배포 정책, 배포 주기, 사상 등이 각기 다르다

유닉스는 현재 서버 시장과 슈퍼컴퓨터 시장에서 매우 높은 점유율을 가지고 있다

 

3) 매킨토시 운영체제 OS X의 특징

유닉스 기반으로 만들어져 애플사의 제품군에서만 사용이 가능한 그래픽 기반 운영체제이다

애플사는 OS라는 운영체제를 오랜 기간 유지하여 왔으나, 1999년 OS X로 업데이트를 하였다

이휴에는 클라이언트 버전, 서버 제품 등으로 제품군을 확대하였으며 2017년 OS X 시에라, 2018년 모하비 등을 지속적으로 발표하고 있다

매킨토시 OS는 프로그램을 카피하고 삭제함으로써 Install과 Uninstall의 과정을 단순화 하였으며, 드라이버 설치 또한 OS의 확장 폴더에 넣고 재부팅을 하면 인식되어 매우 간단하다

 

03 운영체제의 기능 및 구성

1) 운영체제의 기능

자원 관리

컴퓨터 시스템의 자원을 응용 프로그램에 나누어주어 사용자가 원활하게 작업할 수 있도록 한다

자원을 요청한 프로그램이 여러개라면 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 다른 응용 프로그램에 나누어준다

 

자원보호

비정상적인 작업으로부터 컴퓨터 자원을 보호한다

 

하드웨어 인터페이스 제공

사용자가 복잡한 과정 없이 다양한 장치를 사용할 수 있도록 하드웨어 인터페이스를 제공한다

CPU,메모리, 키보드, 마우스와 같은 다양한 하드웨어를 일관된 방법으로 사용할 수 있도록 지원한다

 

사용자 인터페이스 제공

사용자가 운영체제를 편리하게 사용하도록 지원한다

 

2) 운영체제의 구성

운영체제는 제어 프로그램과 처리 프로그램으로 나눈다

 

제어 프로그램

감시 프로그램 : 주기억 장치상에 상주해 있으면서 하드웨어가 최대한 작동되도록 시스템을 감시하는 프로그램이다

작업관리 : 한 업무를 처리하고 다른 업무를 자동으로 수행하기 위한 준비 및 처리에 관한 일을 담당하는 기능을 가진 프로그램으로 업무의 연속처리를 위한 스케쥴이나 입출력 장치의 할당을 담당한다

데이터 관리 프로그램 : 컴퓨터 시스템에서 ㅟ급하는 여러 종류의 파일과 자료가 표준적인 방법으로 처리될 수 있도록 관리하는 프로그램이다

 

처리 프로그램

언어번역, 서비스 프로그램

 

언어번역 프로그램 : 사용자가 고급언어로 작성한 프로그램을 기계어로 변환해 주는 프로그램이다

서비스 프로그램 : 프로그램 작성자의 편리성을 주기 위해 컴퓨터 메이커측에서 제공해주는 프로그램이다

사용자 작성 프로그램 : 사용자가 작성한 문제 해결 프로그램으로 보통 운영체제 부분에서 제외한다

 

04 운영체제의 유형

1) 일괄 처리 시스템

모든 작업을 한꺼번에 처리하고 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가능한 시스템이다

메인메모리가 운영체제의 상주 영역과 사용자의 영역으로 나뉜다

 

2) 다중 프로그래밍 시스템

하나의 CPU로 여러 작업을 동시에 실행하는 기술

한 번에 하나의 작업만 가능한 일괄 작업 시스템에 비해 효율성이 뛰어나다

시간을 분할하는 방법 때문에 여러 작업이 동시에 실행되는 것처럼 보임

 

3) 실시간 처리 시스템

사용할 수 있는 자원이 한정되어 있는 상황에서 작업 수행이 요청되었을 때 이를 제한된 시간 안에 처리해 결과를 내주는 것이다 

작업의 실행 시작이나 완료에 대한 시간 제약 조건을 무조건 지켜야 하는 시스템이다 

작업 실행에서 시간 제약 조건은 있으나 이를 지키지 못해도 시스템에 치명적인 영향을 끼치지 않는 시스템이다

4) 분산 처리 시스템

개인용 컴퓨터와 인터넷이 보급되면서 값이 싸고 크기가 작은 컴퓨터를 하나로 묶어서 대형 컴퓨터의 능력에 버금가는 시스템을 만들 수 있게 됨

네트워크상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교차하도록 구성한 시스템이다

 

5) 클라이언트/서버 시스템

작업을 요청하는 클라이언트와 거기에 응답하여 요청되는 작업을 처리하는 서버의 이중 구조로 나뉜다

웹 시스템이 보급된 이후 일반인들에게 알려짐

 

6) P2P시스템

클라이언트/서버 구조의 단점인 서버 과부하를 해결하기 위해 만든 시스템이다

서버를 거치지 않고 사용자와 사용자를 직접 연결한다

냅스터에서 시작하여 현재는 메신저나 토렌트 시스템에서 사용된다 

 

7) 컴퓨팅 환경

그리드 컴퓨팅

서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀을 구성하고 이를 원격지와 연결하여 대용량 연산을 수행하는 컴퓨터 환경이다 

CPU 관리, 저장소 관리, 보안 조항, 데이터 이동, 모니터링과 같은 서비스를 위한 표준규약 생성에 기여한다

 

그리드가 하드웨어적인 컴퓨팅 환경의 통합이라고 한다면

SaaS(Software as a Service)는 사용자가 필요한 소프트웨어 기능만을 필요할 때 이용하고, 이용한 기능만큼만 비용을 지불하는 개념이다

 

클라우드 컴퓨팅

언제 어디서나 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅 환경

그리드컴퓨팅 + SaaS

필요한 기간만큼만 컴퓨터를 사용하고 사용한 금액만큼만 돈을 지불하는 컴퓨팅 환경 

PC,폰, 스마트 기기 등을 통하여 인터넷에 접속하고 다양한 작업을 수행하며, 데이터 또한 기기들 사이에서 자유롭게 이동이 가능한 컴퓨팅 형태

하드웨어를 포함한 시스템이 구름에 가려진 것처럼 사용자에게 보이지 않는 컴퓨팅 환경이라는 뜻 

 

IoT 사물 인터넷

사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술 

인터넷으로 연결된 사물들이 데이터를 주고받아 스스로 분석하고 학습한 정보를 사용자에게 제공하거나 새로운 서비스를 창출함 

 

05 운영체제 기본 명령어 활용

1) 윈도우 운영체제의 기본 명령어

GUI 기본 명령어

윈도우 내에서 파일을 이동하고 프로그램을 실행하는 것 등 모든 것이 GUI 명령에 해당한다

메모리나 디스크 제어 등이 필요할 경우에는 제어판에서 필요 기능을 선택하여 명령을 내릴 수 있다

 

2)리눅스/유닉스 계열 운영체제의 기본 명령어

리눅스와 유닉스 명령어는 Shell에서 입력할 수 있다

Shell : 컴퓨터 내부를 관리하는 Kernel과 사용자 간을 연결하는 Command 창이다. 

 

Shell의 기본 기능

세션별 변수를 설정, 운영체제를 사용자가 원하는 상태로 설정하도록 지원

사용자 요청에 기반한 명령을 작성

백그라운드 처리, 서브 셸 생성

일련의 명령어를 묶어 처리하는 스크립트 기능 지원

 

Bourne계열 : Bash셸, Korn셸, Bourne셸 등

C계열 :  Csh,Tcsh,Zsh,Ash 셸 등

유닉스에서 가장 보편적인 Shell : Ksh

리눅스에서 가장 보편적인 Shell : Bash

 

CLI 기본 명령어 : Command Line Interface

리눅스는 최상위 유지를 CLI환경에서 #으로 표시하며 일반 유저를 $로 표시한다

명령어에 대한 도움말은 -help, -h, #man을 명령어 뒤에 붙임으로써 확인할 수 있다

 

모든 명령어에는 다른 옵션값들이 존재한다

#mkdir = make directory, p옵션을 사용하면 하위 디렉터리까지 한 번에 생성할 수 있다

#cp는 파일 복사 명령어, -i 덮어쓰기, - r은 하위 디렉터리 및 파일 모두 복사, -v는 명령어 실행 과정을 보여주는 옵션값

 

명령어는 파일 디렉터리 관리, 유저 관리, 권한 관리, 프로세스 관리, 통신 관련 등으로 구분됨

최상위 디렉터리 : '/'

root는 최상위 디렉터리 아래 root계정의 홈 디렉터리임을 의미함

****타 운영체제에서 root를최상위 디렉터리라고 하는것과 다름

 

리눅스에서 디렉터리 구조

/ etc 시스템 환경 및 주요 설정 파일 보관
  tmp 임시 파일 보관
  lib 프로그램 모듈 보관
  usr 사용자 활용 파일 보관
  dev 물리적 장치 제어를 위한 파일 보관
  home 각 사용자의 작업 디렉터리
  boot 리커널을 위한 프로그램 파일 보관
  root 슈퍼유저 홈 디렉터리
  sbin 슈퍼유저가 사용하는 명령어 저장 디렉터리
  var 리시스템 동작 중 변화하는 파일 저장
   기타  

 

리눅스/유닉스 기본 명령어

구분 명령어
시스템 관련 #uname -a, #uname -r, #cat, #uptime
하드웨어  #dmesg, #free -m, #lspci -tv, #Ishal
Statistics #top, #mpstat 1, #isostat 2
사용자 #id, #last, #who
파일 처리 #ls, #pwd, #rm, #cp, #mv
프로세스  #ps, #pmap, #kill pid
파일 permission  #chmod, #chown
네트워크 #ifconfig, #dig, #host
압축 #tar, #gzip
인스톨  #rpm
검색  #grep, #find, #locate
로그인  #ssh, #telnet host
파일 이동  #csp, #rsync
디스크 사용  #df, #du
디렉터리 이동 #cd

 

GUI 기본 명령어

리눅스의 GUI는 윈도우와 같이 기본 설정이 아닌 경우가 많아 버전별로 별도의 설치방법에 따라 GUI환경을 설치해야 한다.

설치 뒤에는 GUI환경과 CLI환경을 이동하는 명령어를 사용하여 두 환경을 이동시킬 수 있다.

-리눅스 또는 유닉스를 구동시킨다

-help center

 

06 운영체제 핵심 기능

1) 메모리 관리

메모리 안에는 다수의 프로그램이 실행됨

프로그램 실행 중 메모리가 꽉 차게 되면 시스템의 속도가 느려지고 시스템이 멈추는 현상이 발생함

프로그램의 실행이 종료될 때까지 메모리를 가용한 상태로 유지 및 관리하는 것을 메모리 관리라고 함

 

고정 분할 방식 Fixed Partition

물리적 메모리를 몇 개의 영구적인 분할로 나누고 각각의 영역에 프로그램 하나씩 적재시킴

 

가변 분할 방식 Variable Partition

매 시점 프로그램 크기에 맞게 메모리를 분할함

물리적 메모리보다 큰 프로그램 실행이 불가능, 분할의 크기와 개수가 동적으로 변하므로 기술적 관리 기법이 필요함

필요한 크기만큼 메모리를 분할하므로 내부 조각이 나지 않지만, 외부 조각이 발생할 수 있다

 

가상 메모리 기법 Virtual Memory

용량이 작은 주기억 장치를 마치 큰 용량을 가진 것처럼 사용하는 기법, 물리적 메모리보다 큰 프로그램이 실행되는것을 지원

가상 메모리에서 메모리 관리자가 사용할 수 있는 메모리의 전체 크기는 물리 메모리와 스왑 영역을 합한 크기임

모든 프로그램은 물리적 메모리와는 독립적으로 주소가 0부터 시작하는 자신만의 가상 메모리를 가지게 됨

운영체제는 가상 메모리의 주소를 물리적 메모리 주소로 매핑하는 기술을 이용해 주소를 변환시킨 후 프로그램을 메모리에 올림

 

 

페이징 기법

고정 분할 방식을 이용한 가상 메모리 관리 기법

물리 주소 공간을 같은 크기로 나누어 사용

가상 주소는 프로세스 입장에서 바라본 메모리 공간으로 항상 0번지부터 시작

 

페이지와 프레임

가상 주소의 분할된 각 영역을 페이지라고 하며 번호를 매겨 관리함

물리 메모리의 각 영역은 가상 주소의 페이지와 구분하기 위해 프레임이라고 함

페이지와 프레임의 크기는 같기 때문에 페이지는 어떤 프레임에도 배치될 수 있음

어떤 페이지가 어떤 프레임에 있는지에 대한 연결 정보는 페이지 테이블에 담겨있음

페이지 테이블에 invalid는 해당 페이지가 스왑 영역에 있다는 의미임

가상 주소-> 물리 주소

페이지 테이블

 

 

페이지 테이블 매핑 방식

직접 매핑 : 페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식으로 별다른 부가 작업 없이 바로 주소 변환이 가능한 방식이다 

 

연관 매핑 : 페이지 테이블 전체를 스왑 영역에 관리하는 방식으로 물리 메모리의 여유 공간이 작을 때 사용한다. 모든 페이지 테이블을 저장 장치의 스왑 영역에 저장하고 그 중 일부만 물리 메모리에 가지고 있음 모든 페이지 테이블을 저장 장치의 스왑 영역에 저장하고 그 중 일부만 물리 메모리에 가지고 있음 연관 매핑은 페이지 테이블의 일부만 무작위로 가져옴

 

집합-연관 매핑 : 연관 매핑의 문제를 개선한 방식으로 모든 페이지 테이블을 스왑영역에서 관리하고 일부만 물리 메모리로 가져오므로 페이지 테이블을 일정한 합으로 자르고, 자른 덩어리 단위로 물리 메모리에 가져옴

 

 

 

세그멘테이션 기법

세그먼트의 크기를 나타내는 Limit와 물리 메모리상의 시작 주소를 나타내는 Address가 있다 

각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안 되기 때문에 세그먼트의 크기 정보에는 크기를 뜻하는 Size대신 제한을 뜻하는 limit를 사용함

크기가 100B인 프로세스D(세그먼트 3)가 스왑 영역에 있고, 세그먼테이션 테이블의 Address에 I(Invalid)라고 표시되어있다

세그멘테이션-페이징 혼용 기법

사용자 입장에서는 세그멘테이션 기법

메모리 관리자 입장에서는 페이징 기법

을 사용하는 가상 메모리 관리 기법

메모리 보호 및 중복 정보를 세그멘테이션 테이블에서 관리함으로써 메모리 관리를 효율적으로 할 수 있음

사용자가 어떤 주소에 있는 데이터를 요청하면 해당 주소가 몇 번째 세그먼트의 몇번째 페이지로부터 얼마나 떨어져 있는지 계산

가상 주소 VA = <. S, P, D>를 구한다 

세그먼테이션 테이블의 해당 세그먼트 번호로 가서 자신의 영역을 벗어나는 불법 접근이 아닌지 권한이 없는 페이지에 접근하는 것은 아닌지 등을 확인

페이지 테이블에서 해당 페이지가 어느 프레임에 저장되었는지 찾는다 : 만약 물리 메모리에 프레임이 있다면 메모리에 바로 접근하고, 없다면 스왑 영역에 가서 해당 페이지를 물리 메모리로 가져옴

물리 메모리에 있는 프레임의 처음 위치에서 D만큼 떨어진 곳에 접근하여 데이터를 읽거나 쓴다 

캐시 직접 매핑

메모리의 블록이 캐시로 올라올 때 항상 같은 위치에 올라온다 

캐시는 메모리의 어떤 블록에서 올라온 페이지인지만 확인한다

CPU가 메모리에 접근하려면 주소 <P,D>는 <tag,bd,D>로 바꿀 수 있고 원하는 데이터를 캐시에 얻기 위해 <tab, D>를 사용한다 

현재 캐시의 00위치에 ㅣㅑㅐㅜ, 초ㅑ차두, 쎠ㅜㅁ

'Others > 자격증 공부' 카테고리의 다른 글

002 스크럼 기법 Scrum  (0) 2022.03.08
001 소프트웨어 생명주기  (0) 2022.03.07
02-03 라이브러리 활용하기  (0) 2021.07.31
02-02 언어 특성 활용하기  (0) 2021.07.31
02-01 기본 문법 활용하기  (0) 2021.07.29