2022. 9. 13. 17:27ㆍ정처기(실기)/응용 SW 기초 기술 활용
(1) 운영체제의 개념
1. 운영체제란?
- 운영체제는 사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어이다.
- 운영체제는 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 편리성을 제공한다.
- 운영체제는 컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당한다.
2. 운영체제의 특징
- 운영체제는 사용자 편리성, 인터페이스, 스케줄링, 자원관리, 제어 기능의 특징이 있다.
▼ 운영체제 특징
특징 | 설명 |
사용자 편리성 제공 | 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영 |
인터페이스 기능 | 컴퓨터 시스템과 사용자를 연결 |
스케줄링 담당 | 다중 사용자와 다중 응용 프로그램 환경하에서 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링 담당 |
자원 관리 | CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원 관리 |
제어 기능 | 입출력 장치와 사용자 프로그램을 제어 |
① 운영체제에서 커널의 기능
- 운영체제는 크게 쉘 + 커널의 구조이다.
- 운영체제의 핵심적인 기능들이 커널에 모여있다면, 인터페이스는 이러한 커널을 사용자가 보다 편리하게 사용할 수 있게 해준다.
- 커널은 쉘과 대비될 수 있는데, 쉘은 운영체제의 가장 바깥 부부네 위치해서 사용자 명령에 대한 처리를 담당하는 역할을 하고, 커널은 하드웨어와 관련된 내부적인 역할을 담당한다.
▼커널의 기능
기능 | 설명 |
프로세스 관리 | 프로세스 스케줄링 및 동기화 관리 담당 프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 담당 |
기억장치 관리 | 프로세스에게 메모리 할당 및 회수 관리 담당 |
주변장치 관리 | 입출력 장치 스케줄링 및 전반적인 관리 담당 |
파일 관리 | 파일 관리 파일의 생성과 삭제, 변경, 유지 등의 관리 담당 |
(2) 운영체제의 종류
1. 윈도즈 운영체제
- MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 마이크로소프트사가 개발한 운영체제이다.
▼윈도즈 운영체제 특징
- 그래픽 사용자 인터페이스 제공 : 키보드 없이 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 기반의 인터페이스 방식
- 선점형 멀티태스킹 방식 제공 : 동시에 여러 개의 프로그램을 실행하면서 운영체제가 각 작업의 CPU 이용 시간을 제어
- 자동감지 기능 제공 : 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 자동감지 기능
- OLE : 개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공
2. 유닉스 계열 운영체제
- 90% 이상 C 언어로 구현되어 있는 운영체제로 범용 다중 사용자 방식의 시분할 운영체제이다.
- 유닉스는 처음부터 다양한 시스템에 서로 인식할 수 있고, 멀티 태스킹을 지원하도록 설계되었다.
▼유닉스 계열 운영체제 특징
- 대화식 운영체제 기능 : 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공
- 다중 작업 기능 : 다수의 프로세스가 CPU와 같은 공용자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공
- 다중 사용자 기능 : 여러 대의 단말이 하나의 컴퓨터에 연결되어서, 여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공
- 이식성 제공 : 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능
- 계층적 트리 구조 파일 시스템 제공 : 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이
① 리눅스 운영체제
- 유닉스를 기반으로 개발되고, 소스 코드가 공개된 오픈 소스 기반의 운영체제이다.
- 리눅스는 데비안, 레드헷, Fedora, Ubuntu, CentOS와 같이 다양하게 출시되고 있다.
- 유닉스 계열의 운영체제로 대화식 운영체제, 다중 작업 기능, 다중 사용자 기능, 이식성, 계층적 트리 구조 파일 시스템을 갖는다.
② 맥 운영체제
- 애플이 유닉스를 기반으로 개발한 그래픽 사용자 인터페이스 기반의 운영체제이다.
③ 안드로이드 운영체제
- 휴대 전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램을 포함하고 있는 운영체제이다.
▼안드로이드 특징
- 리눅스 기반 : 안드로이드는 리눅스 커널 위에서 동작
- 자바와 코틀린 언어 : 고수준 언어를 사용해 응용 프로그램을 작성
- 런타임 라이브러리 : 컴파일된 바이트 코드 구동 가능
- 안드로이드 소프트웨어 개발 키트 : 응용 프로그램을 개발하는 데 필요한 각종 도구와 API를 제공
(2) 운영체제 제어
▼ 윈도즈 운영체제의 기본 명령어
- ATTRIB : 파일 속성을 표시하거나 바꿈
- CALL : 한 일괄 프로그램에서 다른 일괄 프로그램을 호출
- CD : 현재 디렉터리 이름을 보여주거나 바꿈
- CHKDSK : 디스크를 검사하고 상태 보고서를 표시
- CLS : 화면을 지움
- CMD : Windows 명령 프롬프트 창을 열어줌
- COMP : 두 개 이상의 파일을 비교
- DISKPART : 디스크 파티션 속성을 표시하거나 구성
- ECHO : 메시지를 표시하거나 사용 또는 사용하지 않음
- ERASE : 하나 이상의 파일을 지움
- EXIT : CMD.EXE 프로그램을 마침
(3) 리눅스/유닉스 계열의 기본 명령어
- 리눅스와 유닉스 명령어는 쉘에서 입력할 수 있다.
- 리눅스는 최상위 유저를 CLI 환경에서 #으로 표시하며 일반 유저를 $로 표시한다.
- 명령어에 대한 도움말은 --help, -h를 명령어 뒤에 붙임으로써 확인할 수 있다.
1. 리눅스/유닉스 운영체제의 기본 명령어
- uname-a : 시스템의 모든 정보를 확인
- uname-r : 운영체제의 배포버전을 출력
- cat : 파일의 내용을 화면에 출력
- uptime : 시스템의 가동 시간과 현재 사용자 수, 평균 부하량 등을 확인하는 명령어
- id : 사용자의 로그인명을 출력
- last : 시스템의 부팅부터 현재까지의 모든 사용자의 로그인과 로그아웃에 대한 정보 표시
- who : 현재 접속 사용자 정보를 표시
- ls : 자신이 속해있는 폴더 내에서의 파일 및 폴더들을 표시
- pwd : print working directory의 약자, 현재 작업 중인 디렉토리의 절대 경로를 출력
- rm : 파일 삭제
- cp : 파일 복사
- mv : 파일 이동
- ps : 현재 실행되고 있는 프로세스 목록 출력
- pmap : 프로세스 ID를 기준으로 메모리 맵 정보를 출력
- kill : 특정 PID 프로세스 종료 명령어
- chmod : 특정 파일 또는 디렉토리의 퍼미션 수정 명령어
- chown : 파일이나 디렉토리의 소유자, 소유 그룹 수정 명령어
- ifconfig : 네트워크 인터페이스를 설정하거나 확인
- host : 도메인 명은 알고 있는데 ip 주소를 모르거나 혹은 그 반대의 경우에 사용
- tar : 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용
- gzip : 파일을 묶거나 풀 수는 없지만 압축을 담당하는 명령어
- grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자 할 때 사용
- find : 특정한 파일을 찾음
- cp : 디렉토리를 복사할 때 사용하는 명령어
- rsync : 로컬 또는 원격에 파일과 디렉토리를 복사하고 동기화
- df : 시스템에 마운트된 하드디스크의 남은 용량을 확인할 때 사용
- du : 파일 사이즈를 킬로 바이트 단위로 보여줌
- cd : 디렉토리 이동
2. 리눅스/유닉스 운영체제의 파일 접근 권한 관리
i-node에는 각 파일의 물리적 위치, 생성 수정 사용 날짜 등의 정보와 더불어 파일소유자 등의 파일 접근제어와 관련된 정보가 수록되며 해당 정보를 이용하여 DAC 기반 접근제어를 수행한다.
- Read, Write, eXcute로 파일을 읽거나, 쓰거나, 실행할 수 있는 3가지 모드로 구분한다.
- chmod 명령은 기존 파일 또는 디렉토리에 대한 접근권한을 변경할 때 사용한다.
ex)
chmod go-w yoom.c : yoom.c의 group, others에 w 쓰기 권한 제거
chmod a=rw yoom.c : yoom.c의 모든 사용자에 rw 권한 설정
chmod g+w, o-x, yoom.c : yoom.c의 group에 w권한을 추가하고, others에 x 권한 제거
chmod 777 yoom.c : 모든 사용자에 rwx 권한 설정
chmod 664 yoom.c : user, group에 rw 권한, others에 r 권한 설정
chmod 600 yoom.c : user에 rw 권한 설정
(3) 운영체제 핵심 기능
1. 메모리 관리 기법
기법 | 설명 | 세부 기법 |
반입 기법 | 주기억장치에 적재할 다음 프로세스의 반입 시기를 결정(When) | 요구 반입 기법 예상 반입 기법 |
배치 기법 | 디스크에 있는 프로세스를 주기억장치의 어느 위치에 저장할 것인지 결정(Where) | 최초 적합 최적 적합 최악 적합 |
할당 기법 | 실행해야 할 프로세스를 주기억장치에 어떤 방법으로 할당한 것인지 결정(How) | 연속 할당 분산 할당 |
교체 기법 | 재배치 기법으로 주기억장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지 결정(Who) | 프로세스의 Swap In/Out, FIFO, Optimal, LRU, LFU, MFU |
① 메모리 배치 기법
㉮ 최초적합
- 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식
㉯ 최적적합
- 가용 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스를 적재하는 방식
㉰ 최악적합
- 프로세스의 가용 공간들 중에서 가장 큰 공간에 할당하는 방식
2. 프로세스 관리
- 하나의 프로세스는 여러 가지 이벤트에 의해 일련의 서로 구분되는 상태 변화를 겪는다.
▼프로세스 상태
- 생성 상태 : 사용자에 의해 프로세스가 생성된 상태
- 준비 상태 : CPU를 할당받을 수 있는 상태
- 실행 상태 : 프로세스가 CPU를 할당 받아 동작 중인 상태
- 대기 상태 : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 입출력 처리가 완료까지 대기 리스트에서 기다리는 상태
- 완료 상태 : 프로세스가 CPU를 할당받아 주어진 시간 내에 완전히 수행을 종료한 상태
① 프로세스 상태 전이
- 하나의 작업이 컴퓨터 시스템에 입력되어 완료되기까지 프로세스의 상태가 준비, 실행 및 대기 상태로 변하는 활동
▼프로세스 상태 전이
- 디스패치 : 준비 상태에 있는 여러 프로세스 중 실행될 프로세스를 선정하여 CPU를 할당
- 타이머 런 아웃 : CPU를 할당받은 프로세스는 지정된 시간이 초과되면 스케줄러에 의해 PCB 저장, CPU 반납 후 다시 준비 상태로 전이
- 블록 : 실행 상태에 있는 프로세스가 지정된 할당시간을 초과하기 전에 입출력이나 기타 사건이 발생하면 CPU를 스스로 반납하고 입출력이 완료될 때까지 대기 상태로 전이됨
- 웨이크 업 : 어느 순간에 입출력이 종료되면 대기 상태의 프로세스에게 입출력 종료 사실을 wait&signal 등에 의해 알려주고, 준비 상태로 전이됨
3. 프로세스 스케줄링
- CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업이다.
- 응답률 : (대기시간+서비스 시간)/서비스시간 -> HRN 스케줄링에서 사용
①프로세스 스케줄링 유형
*선점형 스케줄링*
- 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유
- 장점 : 비교적 빠른 응답, 대화식 시분할 시스템에 적합
- 단점 : 높은 우선순위 프로세스들이 들어오는 경우 오버헤드 초래
- 알고리즘 : 라운드 로빈, SRT, 다단계 큐, 다단계 피드백 큐
- 활용 : 실시간 응답 환경
*비선점형 스케줄링*
- 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식
- 장점 : 응답시간 예상이 용이, 모든 프로세스에 대한 요구를 공정하게 처리
- 단점 : 짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 대기
- 알고리즘 : 우선순위, 기한부, FCFS, HRN, SJF
- 활용 : 처리시간 편차가 적은 프로세스 환경
4. 프로세스 관리-교착상태
①교착상태 개념
- 교착상태는 다중프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태이다.
▼교착상태 발생 조건
발생 조건 | 설명 |
상호 배제 | 프로세스가 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용할 수 없는 상태 |
점유와 대기 | 한 프로세스가 자원을 점유하고 있으면서 또 다른 자원을 요청하여 대기하고 있는 상태 |
비선점 | 한 프로세스가 점유한 자원에 대해 다른 프로세스가 선점할 수 없고, 오직 점유한 프로세스만이 해제 가능한 상태 |
환형 대기 | 두 개 이상의 프로세스 간 자원의 점유와 대기가 하나의 원형을 구성한 형태 |
② 교착상태 해결방법
해결 방법 | 설명 | 세부 기법 |
예방 | 상호 배제를 제외한 나머지 교착상태 발생 조건을 위배하는 방안 | 점유 자원 해제 후 새 자원 요청 |
회피 | 안전한 상태를 유지할 수 있는 요구만 수락 | 은행가 알고리즘, Wound-wait, wait-die |
발견 | 시스템의 상태를 감시 알고리즘 통해 교착 상태 검사 | 자원할당 그래프, Wait for Graph |
복구 | 교착상태가 없어질 때까지 프로세스를 순차적으로 kill하여 제거, 희생자 선택해야 하고 기아 상태 발생 | 프로세스 kill, 자원선점 |
(4) 가상화, 클라우드
1. 가상화 개념
- 가상화는 물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술이다.
- 대부분의 서버는 용량의 20% 정도만을 사용하는데, 가상화를 통해 서버의 가동률을 60~70% 이상으로 올릴 수 있다.
▼가상화의 종류
- 플랫폼 가상화 : 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 마치 독립된 환경을 만들어 낸 것처럼 보여주는 기법
- 리소스 가상화 : 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용하는 기법
▼가상화 기술요소
기술요소 | 설명 |
컴퓨팅 가상화 | 물리적으로 컴퓨터 리소스를 가상화하여 논리적 단위로 리소스를 활용할 수 있도록 하는 기술 서버 가상화를 통해 하나의 시스템에서 1개 이상의 운영체제를 동시에 가동시킬 수 있으므로, 서버 이용률이 크게 향상 예 : 하이퍼바이저 |
스토리지 가상화 | 스토리지와 서버 사이에 소프트웨어/하드웨어 계층을 추가하여 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술 예 : 분산 파일 시스템 |
I/O 가상화 | 서버와 I/O 디바이스 사이에 위치하는 미들웨어 계층, 서버의 I/O 자원을 물리적으로 분리하고 케이블과 스위치 구성을 단순화하여 효율적인 연결을 지원하는 기술 예 : 가상 네트워크 인터페이스 카드 |
컨테이너 | 컨테이너화된 애플리케이션들이 단일 운영체제상에서 실행되도록 해주는 기술 예 : 도커 |
분산처리 기술 | 여러 대의 컴퓨터 계산 및 저장능력을 이용하여 커다란 계산문제나 대용량의 데이터를 처리하고 저장하는 기술 |
네트워크 가상화 기술 | 물리적으로 떨어져 있는 다양한 장비들을 연결하기 위한 수단으로 중계장치의 가상화를 통한 가상 네트워크를 지원하는 기술 예 : SDN, NFV |
2. 클라우드 컴퓨팅
- 인터넷을 통해 가상화된 컴퓨터시스템 리소스를 제공하고, 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술이다.
- 구성 가능한 컴퓨팅 자원에 대해 어디서나 접근할 수 있다.
▼ 클라우드 서비스 유형
유형 | 설명 |
인프라형 서비스 (IaaS) |
서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스 |
플랫폼형 서비스 (PaaS) |
인프라를 생성, 관리 하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스 |
소프트웨어형 서비스 (SaaS) |
소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스 |