11. 응용 SW 기초 기술 활용
운영체제의 특징
운영체제의 종류
운영체제(OS; Operating System)의 개념
- 사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어
- 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 편리성을 제공
- 컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당
운영체제의 종류
윈도즈 운영체제
- MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 응용 프로그램으로서, 마이크로소프트사가 개발
윈도즈 운영체제 특징
- 그래픽 사용자 인터페이스(GUI) 제공
- 선점형 멀티태스킹 방식 제공
- 자동감지 기능 제공
- OLE(Object Linking and Embedding) 사용 : 개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능
유닉스 운영체제
- 범용 다중 사용자 방식의 시분할 운영체제
- 다양한 시스템에 서로 이식, 멀티 태스킹과 다중 사용자를 지원
유닉스 계열 운영체제 특징
- 대화식 운영체제 기능 제공 : 프롬프트를 사용
- 다중 작업 기능 제공
- 다중 사용자 기능 제공
- 이식성 제공 : 90% C 언어로 구현, 모듈화
- 계층적 트리 구조 파일 시스템 제공 : 파일 관리 용이
운영체제 기본 명령어 활용
운영체제 제어
운영체제 제어 방법
- CLI : Command Line Interface. 사용자가 직접 명령어를 입력.
- GUI : Graphic User Interfafce. 마우스로 화면을 클릭하여 그래픽 위주로 컴퓨터를 제어
윈도즈 운영체제의 기본 명령어
- CLI 명령어를 입력하기 위해서 명령 창이 필요
- Help로 검색이 가능
윈도즈 운영체제의 기본 명령어
- ATTRIB : 파일 속성을 표시하거나 바꿈
- CALL : 한 일괄 프로그램에서 다른 일괄 프로그램을 호출
- CD : 현재 디렉터리 이름을 보여주거나 바꿈.
- CHKDSK : 디스크 검사. 상태 보고서.
- CLS : 화면 지움
- CMD : 명령 프롬프트 창 열기
- COMP : 두 개 이상의 파일 비교
- DISKPART : 디스크 파티션 속성을 표시하거나 구성
- ECHO : 메시지를 표시하거나 ECHO 사용 여부 결정
- ERASE : 하나 이상의 파일을 지움
- EXIT : CMD.EXE 프로그램(명령 인터프리터)을 마침
리눅스/유닉스 계열의 기본 명령어
- 명령어 쉘에서 입력
- 최상위 유저를 CLI 환경에서 #으로 표시, 일반 유저는 $로 표시
- --help, -h, -man로 도움말 확인
리눅스/유닉스 운영체제의 기본 명령어
시스템 관련
- uname -a : 시스템 모든 정보 확인
- uname -r :운영체제 배포 버전
- cat : 파일 내용 출력
- uptime : 시스템 가동 시간, 현재 사용자 수, 평균 부하량 확인
사용자
- id : 사용자의 로그인 명, id, 그룹 id
- last : 부팅부터 현재까지의 모든 사용자의 로그인과 로그아웃에 대한 정보
- who : 현재 접속 사용자 정보를 표시
파일 처리
- ls : 파일 폴더 표시
- pwd : 현재 작업 중인 디렉토리
- rm : 파일 삭제
- cp : 파일 복사
- mv : 파일 이동
프로세스
- ps : 현재 실행되고 있는 프로세스 목록
- pmap : 프로세스 ID로 프로세스 맵 정보 출력
- kill : 특정 PID 프로세스 종료
파일 권한
- chmod : 파일, 디렉토리 퍼미션 수정
- chown : 파일 디렉터리 소유자, 소유 그룹 수정
- ifconfig : 네트워크 인터페이스 설정
- host : 호스트명 ip 주소 알고 싶을 때
압축
- tar : 압축은 안하고 걍 묶거나 풀 때
- gzip : 압축을 할 때
검색
- grep : 파일의 내용에서 특정 문자열을 찾고자할 때
- find : 특정 파일을 찾는 명령어
파일 이동
- cp : 디렉토리를 복사할 때 사용하는 명령어
- rsync : 로컬 또는 원격에 파일과 디렉토리 복사, 동기화
디스크 사용
- df : 시스템에 마운트된 하드디스크의 남은 용량 확인
- du : 파일 사이즈를 킬로 바이트 단위로 보여줌
디렉터리 이동
- cd
운영체제 핵심 기능
운영체제 핵심 기능
- 중앙처리장치, 메모리, 스토리지, 주변 기기 등을 적절히 관리
- 운영체제에서 메모리를 자동으로 관리
- 개발 및 시스템 환경이 클라우드화되면서 자원에 대한 관리 노력이 줌
운영체제 핵심 기능 : 메모리 관리, 프로세스 관리
MMU(Memory Managemnet Unit)
CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품으로 가상 메모리 주소를 실제 메모리 주소로 변환하는 장치
메모리 관리 기법
- 반입 기법 : 메모리로 적재 시기 결정. 요구 반입 기법, 호출 반입 기법
- 배치 기법 : 메모리 적재 위치 결정. 최초 적합, 최적 적합, 최악 적합.
- 할당 기법 : 메모리 적재 방법 결정. 연속 할당 기법, 분산 할당 기법.
- 교체 기법 : 메모리 교체 대상 결정. 프로세스의 Swap In/Out, FIFO, Optimal, LRU, LFU, 시계 알고리즘, MFU
프로세스 관리
프로세스 상태
- 생성 상태
- 준비 상태 : CPU 할당받을 수 있음.
- 실행 상태 : CPU 할당 받고 동작 중
- 대기 상태 : 입출력 처리 등으로 인해 CPU 양도하고 대기
- 완료 상태 : 완전히 수행 종료
프로세스 상태 전이
- 디스패치(Dispatch) : 준비 상태에서 실행 상태로 전이. 문맥 교환이 발생
- 타이머 런 아웃(Timer run out) : CPU를 할당받은 프로세스는 지정된 시간이 초과되면 스케줄러에 의해 PCB 저장. CPU 반납 후 다시 준비 상태로 전이.
- 블록(Block) : 실행 상태에 있는 프로세스가 지정된 할당시간을 초과하기 전에 입출력이나 기타 사건이 발생하면 CPU를 스스로 반납 하고 입출력이 완료될 때까지 대기 상태로 전이.
- 웨이크 업(Wake-up) : 입출력이 종료되면 대기 상태의 프로세스에게 입출력 종료 사실을 wait & signal 등에 의해 알려줌. 대기 상태에서 준비 상태로 전이됨.
- Swap-in : 프로세스에게 다시 기억장치가 할당될 경우. 지연 준비 상태나 지연 대기 상태에서 준비 상태나 대기 상태로 전이
- Swap -out : 프로세스가 기억장치를 읽은 경우. 준비 상태나 대기 상태에서 지연 준비 상태나 지연 대기 상태로 전이
문맥교환
CPU가 현재 실행하고 있는 프로세스의 문맥 상태를 프로세스 제어블록(PCB)에 저장하고 다음 프로세스의 PCB로 부터 문맥을 복원하는 작업
프로세스 스케줄링
- CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업
- 처리율, CPU 이용률을 증가, 오버헤드, 응답시간, 반환시간, 대기시간 최소화
- 장기, 중기, 단기 스케줄러가 있음
주요 용어
- 서비스 시간 : 프로세스가 결과를 산출하기까지 소요되는 시간
- 응답시간(반환시간) : Response time 또는 Turnaround time. 프로세스들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간. 응답시간 = 대기시간 + 수행시간
- 평균 응답시간 : 대기 큐의 프로세스가 결과를 산출하기 소요되는 시간 평균
- 대기시간 : 프로세스가 프로세서에 할당 대기까지 큐에 대기하는 시간
- 평균 대기시간 : 프로세스가 대기 큐에서 대기하는 평균시간
- 종료시간 : 요구되는 Processing time을 모두 수행하고 종료된 시간
- 시간 할당량(Time Quantum 또는 Time Slice) : 한 프로세스가 프로세서를 독점하는 것을 방지하기 위해 서비스되는 시간 할당량.
- 응답률 : (대기 시간 + 서비스 시간) / 서비스 시간. HRN(Highest Responce ratio Next) 스케출링에서 사용.
프로세스 스케줄링 유형
- 선점형 스케줄링 : 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식.
알고리즘 : 라운드 로빈, SRT(Shortest Remaining Time First), 다단계 큐(Multi-Level Feedback Queue) - 비선점형 스케줄링 : 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식
알고리즘 : 우선순위, 기한부, FCFS, HRN(High Response Ratio Next), SJF(Shortest Response Ration Next)
프로세스 스케줄링 알고리즘
선점형 스케줄링 알고리즘
- 라운드 로빈 : 프로세스는 같은 크기의 CPU 시간을 할당(시간 할당량). 프로세스가 할당된 시간 내에 처리 완료를 못하면 준비 큐 리스트의 가장 뒤로 보내지고, CPU는 대기 중인 다음 프로세스로 넘어감.
- SRT : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점
- 다단계 큐 : 작업들을 여러 종류 그룹으로 분할. 여러 개의 큐를 이용하여 상위단계 작업에 의한 하위단계 작업이 선점 당함. 각 큐는 자신만의 독자적인 스케줄링을 가짐.
- 다단계 피드백 큐 : 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 큐마다 서로 다른 CPU 시간 할당량을 부여. FCFS와 라운드 로빈 스케줄링 기법을 혼합한 것으로, 새로운 프로세스는 높은 우선순위, 프로세스의 실행시간이 길어질수록 점점 낮은 우선순위 큐로 이동하고 마지막 단계는 라운드 로빈 방식을 적용
비선점형 스케줄링 알고리즘
- 우선순위 : 프로세스별로 우선순위가 주어지고, 우선순위에 따라 CPU를 할당함
- 기한부 : 작업들이 명시된 시간이나 기한 내에 완료되도록 계획
- FCFS : 프로세스가 대기 큐에 도착한 순서에 따라 CPU를 할당함. FIFO
- SJF : 프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료 시 까지 자원 점유. 준비 큐 작업 중 가장 짧은 작업부터 수행. 평균 대기 시간 최소. CPU 요구 시간이 긴 작업과 짧은 작업 간의 불평등이 심하여, CPU 요구 시간이 긴 프로세스는 기아 현상이 발생.
- HRN : 대기 중인 프로세스 중 현재 응답률이 가장 높은 것을 선택. SJF의 약점인 기아 현상을 보완한 기법으로 긴 작업과 짧은 작업 간의 불평등 완화. SJF의 약점인 기아 현상을 보완한 기법으로 긴 작업과 짧은 작업 간의 불평등 완화.
반환시간 및 대기시간 계산방법
반환시간 = 종료시간 - 도착시간
대기시간 = 반환시간 - 서비스시간
가상화, 클라우드
가상화 개념
물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술.
가상화의 종류
- 플랫폼 가상화 : 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 마치 독립된 환경을 만들어 낸 것처럼 보여주는 기법
- 리소스 가상화 : 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용하는 기법. 메모리, 저장 장치, 네트워크 등을 결합하거나 나누기 때문에 사용자는 가상화된 물리적 장치들이 어떤 위치에 있는지 알기 어려움.
가상화 기술요소
- 컴퓨팅 가상화 : 물리적으로 컴퓨터 리소스를 가상화하여 논리적 단위로 리소스를 활용할 수 있도록 하는 기술. 서버 가상화를 통해 하나의 시스템에서 1개 이상의 운영체제를 동시에 가동시킬 수 있으므로, 서버 이용률이 크게 향상. ex) 하이퍼 바이저
- 스토리지 가상화 : 스토리지와 서버 사이에 소프트웨어/하드웨어 계층을 추가하여 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술 ex) 분산 파일 시스템
- I/O 가상화 : 서버와 I/O 디바이스 사이에 위치하는 미들웨어 계층으로, 서버의 I/O 자원을 물리적으로 분리하고 케이블과 스위치 구성을 단순화하여 효율적인 연결을 지원하는 기술. ex) 가상 네트워크 인터페이스 카드
- 컨테이너 : 컨테이너화된 애플리케이션들이 단일 운영체제상에서 실행되도록 해주는 기술. 하이퍼바이저 없이 운영체제가 격리된 프로세스로 동작하기 때문에 오버헤드가 낮음. ex) 도커
- 분산처리 기술 : 여러 대의 컴퓨터 계산 및 저장능력을 이용하여 커다란 계산문제나 대용량의 데이터를 처리하고 저장하는 기술
- 네트워크 가상화 기술 : 물리적으로 떨어져 있는 다양한 장비들을 연결하기 위한 수단으로 중계장치(라우터, 스위치)의 가상화를 통한 가상 네트워크를 지원하는 기술. ex) SDN, NFV
클라우드 컴퓨팅
- 인터넷을 통해 가상화된 컴퓨터 시스템 리소스를 제공하고, 정보를 자사의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술
클라우드 컴퓨팅 분류 : 사설 클라우드, 공용 클라우드, 하이브리드 클라우드
클라우드 컴퓨팅 유형
- 인프라형 서비스(IaaS; Infrastructure as a Service) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스.
- 플랫폼형 서비스(Paas; Platform as a Service) : 인프라를 생성, 관리 하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스.
- 소프트웨어형 서비스(Saas; Software as a Service) : 소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스.