11장 응용 SW 기초 기술 활용

1. 운영체제의 특징

운영체제

사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해주는 소프트웨어
컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당
-> 응용 프로그램이 실행되는 과정에서 하드웨어를 제어하며 응용 프로그램을 실행시키고 실행 결과를 보일 수 있도록 컴퓨터 내부 동작을 관리하는 소프트웨어
-> 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램의 모임
운영체제

운영체제의 특징

  • 사용자 편리성 제공
    운영체제는 사용자가 컴퓨터를 편리하게 사용할 수 있도록 환경을 제공
  • 인터페이스 기능을 담당
    컴퓨터 시스템과 사용자를 연결
  • 스케줄링 담당
    사용자가 여러 명, 응용 프로그램이 여러 개여도 자원의 현재 상태를 파악하고 분배
  • 자원 관리
    CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원을 관리
  • 제어 기능
    입출력 장치와 사용자 프로그램을 제어

커널

운영체제는 크게 인터페이스(쉘) + 커널의 구조

  • 쉘 : 운영체계의 가장 바깥 부분에서 사용자 명령에 대한 처리를 담당 -> 명령어 해석기
  • 커널 : 하드웨어와 관련된 내부적인 역할 담당
    • 프로세스 관리
    • 기억장치 관리
    • 주변장치 관리
    • 파일 관리

운영체제의 종류

  1. 윈도우즈 운영체제
    마이크로소프트에서 개발
  • GUI 제공
  • 선점형 멀티태스킹 방식 제공
    운영체제가 각 작업의 CPU 이용 시간을 제어
  • 자동감지 기능 제공
    하드웨어 설치 시 필요한 시스템 환경을 운영체제가 자동으로 구성
  • OLE(Object Linking and Embedding) 사용
    개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공
    e.g 한글 문서 + 도표 + 음악 파일 등
  1. 유닉스 운영체제
    데니스 리치와 켄 톰슨이 개발
    90% 이상이 C언어로 되어 있음
  • 대화식 운영체제 기능 제공
    프롬프트에서 명령 입력 시 시스템이 수행
  • 다중 작업 기능 제공
    다수의 작업이 CPU와 같은 공용자원을 나누어 사용
  • 다중 사용자 기능 제공
    여러 대의 단말(키보드, 모니터)이 하나의 컴퓨터에 연결되어서 여러 사람이 동시에 시스템을 사용하여 각각의 작업 수행 가능
  • 이식성 제공
    90% 이상이 C언어로 되어 있다 -> 시스템 프로그램이 모듈화 되어 있어 다른 하드웨어 기종으로 쉽게 이식 가능하다
  • 계층적 트리 구조 파일 시스템 제공
    통합적인 파일 관리가 용이하다

유닉스 계열 운영체제 종류

  1. 리눅스 운영체제
    오픈 소스 기반 운영체제
  2. 맥 운영체제
    애플이 유닉스를 기반으로 개발한 그래픽 사용자 인터페이스 기반 운영체제
  3. 안드로이드 운영체제
    휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스, 표준 응용 프로그램 등을 포함
    리눅스 기반, 자바와 코틀린 사용, 런타임 라이브러리, SDK 제공

2. 운영체제 기본 명령어 활용

운영체제 제어 방법

  • CLI
  • GUI

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

  • ATTRIB : 파일 속성 표시, 변경
  • CALL: 프로그램 호출
  • CD : 디렉토리 조회, 이동
  • CHKDSK : 디스크 상태 점검
  • CLS: 화면 지우기
  • CMD : Windows 명령 프롬프트 창 열기
  • COMP : 두 개 이상 파일 비교
  • DISKPART : 디스크 파티션 속성 표시, 구성
  • ECHO : 메시지 표시
  • ERASE : 파일 지우기
  • EXIT : CMD.EXE 프로그램 마침

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

  • uname-a : 시스템 모든 정보 확인
  • uname-r : 운영체제 배포버전 출력
  • cat : 파일 내용 출력
  • uptime : 시스템 가동 시간, 사용자 수, 평균 부하량 등 확인
  • id : 사용자의 로그인명, id, 그룹 id 등을 출력
  • last : 시스템 부팅부터 현재까지 모든 사용자의 로그인과 로그아웃에 대한 정보 표시
  • who : 현재 접속 사용자 정보 표시
  • ls : 폴더 내 파일, 폴더 표시
  • pwd : print working directory 작업 중인 디렉토리 절대 경로 출력
  • rm : 파일 삭제
  • cp : 파일 복사
  • mv : 파일 이동
  • ps : 실행되고 있는 프로세스 목록 출력
  • pmap : 프로세스 ID 기준 메모리 맵 정보 출력
  • kill : 특정 PID 프로세스 종료
  • chmod : 특정 파일 또는 디렉토리의 퍼미션 수정
  • chown : 파일이나 디렉토리의 소유자, 소유 그룹 수정
  • ifconfig : 네트워크 인터페이스 설정, 확인
  • host : 도메인명은 알고 있는데 ip주소를 모르거나 반대의 경우 사용
  • tar : 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용(압축X)
  • gzip : 압축
  • grep : 내용에서 특정 문자열 찾기
  • find : 특정 파일 찾기
  • cp : 디렉토리 복사
  • rsync : 로컬 또는 원격에 파일과 디렉토리를 복사하고 동기화
  • df : 시스템에 마운트된 하드디스크의 남은 용량 확인
  • du : 파일 사이즈를 KB 단위로 보여줌
  • cd : 디렉토리 이동

리눅스/유닉스 운영체제의 파일 접근 권한 관리

리눅스/유닉스 시스템에서 사용자 혹은 프로세스가 파일을 읽거나 실행하면 시스템 호출이 수행되고 각 파일의 정보가 저장된 i-node 값을 읽게 된다
i-node에는 각 파일의 물리적 위치, 생성 날짜, 수정 날짜, 사용 날짜 등의 정보와 더불어 파일 소유자 및 그룹, 접근 권한 등의 파일 접근제어와 관련된 정보가 수록되며, 해당 정보를 이용해 DAC 기반 접근제어를 수행
파일 접근 모드

chmod [-R] premission file_name

3. 운영체제 핵심 기능 파악

운영체제 핵심 기능

  • 메모리 관리
  • 프로세스 관리

메모리 관리 기법

  1. 반입 기법
    보조기억장치에 보관 중인 프로그램이나 데이터를 주기억장치에 적재할 시기를 결정하는 기법
    • 요구 반입 기법 : 실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재
    • 예상 반입 기법 : 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재
  2. 배치 기법
    새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정
    • 최초 적합 : 빈 영역 중 첫 번째 분할 영역
    • 최적 적합 : 단편화를 가장 작게 남기는 분할 영역(사이즈가 가장 알맞은 영역)
    • 최악 적합 : 단편화를 가장 많이 남기는 분할 영역(사이즈가 가장 큰 영역)
  3. 할당 기법 주기억장치에 어떤 방법으로 할당할 것인지 결정
    • 연속 할당 기법
    • 분산 할당 기법
  4. 교체 기법
    재배치 기법, 주기억장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지
    • FIFO
    • LRU(Least Recently Used)
    • LFU(Least Frequently Used)

프로세스

컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램

프로세스 상태 전이

프로세스 스케줄링

메모리에 올라온 프로세스들 중 어떤 프로세스를 먼저 처리할지 순서를 정하는 것

프로세스 스케줄링 유형

  1. 선점형 스케줄링
    다른 프로세스가 실행 중이더라도 운영체제가 CPU를 강제로 뺏을 수 있음
    잦은 문맥 교환으로 오버헤드 많이 발생
    Round Robin, SRT, 다단계 큐, 다단계 피드백 큐
  2. 비선점형 스케줄링
    프로세스가 CPU를 점유하고 있다면 이를 빼앗을 수 없는 방식
    순서대로 처리되는 공정성 보장
    FCFS, SJF, HRN, 우선순위, 기한부 등

선점형 스케줄링 기법

  1. Round Robin
    순서대로 시간 단위로 CPU 할당(선입선처리)
  2. SRT(Shortest Remaining Time First)
    가장 짧은 시간이 소요되는 프로세스 먼저 수행
  3. 다단계 큐
    그룹으로 분류 가능하면 그룹에 따라 각기 다른 준비 상태 큐 이용
    하위 준비 상태 큐에 있는 프로세스를 실행하는 도중이라도 상위 준비 상태 큐에 프로세스가 들어오면 상위에 CPU 할당
  4. 다단계 피드백 큐
    FCFS와 라운드 로빈 스케줄링 기법 혼합

비선점형 스케줄링 기법

  1. FCFS(First Come First Serve)
  2. SJF(Shortest Job First)
    실행 시간이 가장 짧은 프로세스에게 CPU를 할당
  3. HRN(Highest Response Ratio Next)
    우선순위를 계산해서 프로세스들에게 순서를 부여
    우선순위 = (대기시간 + 실행시간) / 실행시간

프로세스 관리-교착상태

교착상태(Deadlock) : 다중프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태

교착상태 발생조건

  • 상호 배제 : 한 개의 프로세스가 자원을 점유하여 다른 프로세스가 자원 사용 불가능
  • 점유와 대기 : 자원을 점유하고 있는 프로세스가 다른 자원을 요청하여 대기 중
  • 비선점 : 한 프로세스가 점유한 자원에 대해 다른 스포세스가 선점할 수 없고, 오직 점유한 프로세스만이 해제 가능
  • 환형 대기 : 두 개 이상의 프로세스 간 자원의 점유와 대기가 하나의 원형을 구성

교착상태 해결방법

  • 예방 : 교착 상태가 발생되지 않도록 사전에 시스템 제어
  • 회피 : 교착 상태가 발생하려고 할 때, 교착상태 가능성을 피해감
  • 발견 : 시스템에 교착 상태가 발생했는지 점검하여 발견
  • 회복 : 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원 회복

가상화, 클라우드

가상화

물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술
가상화를 통해 서버 가동률을 60~70% 이상으로 올릴 수 있다

  • 플랫폼 가상화 : 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램 생성
  • 리소스 가상화 : 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용

가상화 기술요소

  • 컴퓨팅 가상화
  • 스토리지 가상화
  • I/O 가상화
  • 컨테이너
  • 분산처리 기술
  • 네트워크 가상화 기술

클라우드 컴퓨팅

인터넷을 통해 가상화된 컴퓨터 시스템 리소스를 제공하고, 정보를 자신의 컴퓨터가 아닌 클라우드에 연결된 다른 컴퓨터로 처리하는 기술

  • 사설 클라우드 : 가내 보유 컴퓨팅 자원 사용
  • 공용 클라우드 : 클라우드 서비스 제공 업체 서비스 사용
  • 하이브리드 클라우드 : 사설 + 공용 클라우드

클라우드 컴퓨팅 유형

  • 인프라형 서비스(IaaS) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공
  • 플랫폼형 서비스(PaaS) : 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공
  • 소프트웨어형 서비스(SaaS) : 소프트웨어를 서비스 형태로 이용

2. 네트워크 기초 활용하기

네트워크

원하는 정보를 원하는 수신자 또는 기기에 정확하게 전송하기 위한 기반 인프라

  • WAN : 광대역 네트워크, LAN에 비해 전송 거리가 넓지만 에러율이 높고 전송 지연이 크다
  • LAN : 근거리 네트워크, 한 건물 또는 작은 지역을 커버하는 네트워크

OSI 7계층

국제 표준화 기구인 ISO에서 개발
네트워크 프로토콜 디자인, 통신을 7개의 계층으로 나누어 설명한 모델
osi
계층을 지나갈 때마다 헤더가 붙는데, 여기에 해당 계층의 기능과 관련된 제어 정보가 포함되어 있다

계층별 특징

  1. 물리계층
    0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
  2. 데이터 링크 계층
    인접 시스템 간 데이터 전송, 전송 오류 제어
    포인트 투 포인트 간 신뢰성 있는 전송을 보장하기 위한 계층
  3. 네트워크 계층
    단말기 간 데이터 전송을 위한 최적화된 경로 제공
    데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)
  4. 전송 계층
    송수신 프로세스 간의 연결
    양 종단간의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 해줌
  5. 세션 계층
    송수신 간의 논리적인 연결
    양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법 제공
  6. 표현 계층
    데이터 형식 설정, 부호교환, 암복호화
    응용 프로세스의 독립성을 제공하고 암호화
  7. 응용 계층
    사용자와 네트워크 간 응용서비스 연결, 데이터 생성
    데이터의 최종 목적지

네트워크 장비

  • 허브 : 노드들을 연결시켜주는 역할, PC들을 한 곳으로 모아준다
  • 리피터 : 디지털 신호를 증폭시켜주는 역할
  • 브리지 : 두 개의 근거리통신망을 서로 연결
  • L2 스위치 : 느린 전송속도의 브리지, 허브의 단점을 개선, 프레임을 빠르게 전송
  • NIC : Network Interface Card. 외부 네트워크와 데이터를 빠르게 주고받을 수 있게 컴퓨터 내에 설치
  • 스위칭 허브 : 스위치 기능을 가진 허브
  • 라우터 : LAN & LAN / LAN & WAN 연결을 위한 인터넷 네트워킹 장비
  • 게이트웨이 : 프로토콜을 서로 다른 통신망에 접속할 수 있게 해주는 장치
  • L3 스위치 : 3계층에서 네트워크 단위들을 연결
  • 유무선 인터넷 공유기 : 여러 대의 컴퓨터가 하나의 인터넷 라인을 공유할 수 있도록 하는 네트워크 장비
  • 망(백본) 스위칭 허브 : 광역 네트워크를 커버하는 스위칭 허브
  • L4 스위치 : 4계층에서 네트워크 단위들을 연결

네트워크 프로토콜 파악

프로토콜

컴퓨터나 통신장비들 사이에서 원활한 데이터 교환을 수행하기 위해 표준화한 통신 규약

기본 요소

  • 구문 : 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등의 규정
  • 의미 : 조정과 에러 처리를 위한 제어 정보 규정
  • 타이밍 : 속도 조절과 순서 관리 규정

프로토콜의 특징

  • 단편화 : 전송이 가능한 작은 블록으로 나누는 기법
  • 재조립 : 단편화되어 온 조각들을 복원하는 기법
  • 캡슐화 : 상위 계층의 데이터에 각종 정보를 추가하여 하위 계층으로 보내는 기법/ 단편화된 데이터에 정보를 부가
  • 연결 제어 : 데이터의 전송량이나 속도를 제어하는 기법
  • 오류 제어 : 전송 중 발생하는 오류를 검출하고 정정하여 데이터나 제어 정보의 파손에 대비하는 기법
  • 동기화 : 송신과 수신 측의 시점을 맞추는 기법
  • 다중화 : 하나의 통신 회선에 여러 기기들이 접속할 수 있는 기술
  • 주소 시정 : 송신과 수신지의 주소를 부여하여 정확한 데이터 전송을 보장하는 기법

데이터 링크 계층(2계층)

노드 간의 회선 제어, 흐름 제어, 오류 제어 기능 수행

  • 회선 제어 : 두 개의 스테이션이 동시에 신호를 전송하는 경우 신호 간 충돌이 발생하지 않도록 제어
  • 흐름 제어 : 수신 측의 처리 능력에 따라 송신 측에서 송신하는 데이터의 전송량이나 전송 속도를 조절
  • 오류 제어 : 전송 중에 발생하는 오류를 검출하고 정정하여 데이터나 제어 정보의 파손에 대비

데이터 링크 계층 프로토콜
HDLC, PPP, 프레임 릴레이, ATM

네트워크 계층(3계층)

== 인터넷 프로토콜
다양한 길이의 패킷을 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질을 위한 수단을 제공
라우팅, 패킷 포워딩, 인터 네트워킹 등을 수행

네트워크 계층 프로토콜
IP, ARP(IP -> MAC), RARP(MAC -> IP), ICMP(에러 발생 시 원인을 알려주거나 네트워크 상태 진단), 라우팅 프로토콜

  1. IPv4
    데이터를 교환하기 위한 32비트 주소체계를 갖는 네트워크 계층의 프로토콜
    • 주소 유형 : 유니캐스트(1:1), 멀티캐스트(1:다), 브로드캐스트(모든 장비들에게 보냄)
  2. IPv6
    차세대 인터넷 프로토콜
    128비트 주소체계를 갖는다
    • 주소 유형 : 유니캐스트(1:1), 멀티캐스트(1:다), 애니캐스트(가장 가까운 수신자에게 전달해서 전파시켜나감)

IPv4 -> IPv6 전환기술

  • 듀얼 스택 : 장비들이 둘 다 지원, 동시 처리 가능
  • 터널링 : IPv6 패킷을 IPv4 패킷 속에 캡슐화하여 사용
  • 주소 변환 : IPv6 시스템이 IPv4 수신자가 이해할 수 있는, 또는 그 반대로 헤더를 변환

라우팅 프로토콜
패킷이 목적지까지 가는 방법을 결정해주는 프로토콜

  1. RIP(Routing Information Protocol) : HOP(데이터가 목적지까지 전달되는 과정에서 거치는 네트워크의 수) 기반 라우팅 프로토콜, HOP 수만을 고려하여 설계
  2. OSPF(Open Short Path First) : 다익스트라 알고리즘 기반 방식
  3. BGF(Border Gateway Protocol) : 규모가 큰 망을 지원할 수 있는 Path Vector 기반 라우팅 프로토콜

전송 계층(4계층)

종단 간의 사용자들에게 신뢰성 있는 데이터 전달

전송 계층 프로토콜

  1. TCP(Transmission Control Protocol)
    클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜
    데이터를 정확하고 안정적으로 전달할 수 있다(대신 UDP보다 전송 속도가 느림)
  2. UDP(User Datagram Protocol)
    데이터를 주고받을 때 연결 절차를 거치지 않고 발신자가 일방적으로 데이터를 발산하는 프로토콜

네트워크 전달 방식

  1. 패킷 교환 방식
    작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용
    e.g X.25, 프레임 릴레이, ATM
    • 데이터그램 방식 : 연결 경로를 확립하지 않고 각각의 패킷을 순서에 무관하게 독립적으로 전송하는 방식
    • 가상 회선 방식 : 패킷이 전송되기 전에 송수신 스테이션 간의 논리적인 통신 경로를 미리 설정하는 방식
  2. 서킷 교환 방식
    네트워크 리소스를 특정 사용층이 독점하도록 하는 통신 방식

애드혹 네트워크

노드들에 의해 자율적으로 구성되는 기반 구조가 없는 네트워크

3. 기본 개발환경 구축하기

문제 형태로 나오기 어렵다고 함!

운영체제 설치 및 운용 -> 개발 도구 설치 및 운용 -> 응용 시스템 개발 인프라 구축