티스토리 뷰

ch01 운영체제의 특징

 

▶ 운영체제 : 사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어

 

▶ 운영체제 특징 

 - 사용자 편리성 제공 : 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영

 - 인터페이스 기능 담당 : 컴퓨터 시스템과 사용자 연결

 - 스케줄링 담당 : 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링 

 - 제어 기능 : 입출력 장치와 사용자 프로그램 제어

 

▶ 운영체제 = 쉘 + 커널 

 - 쉘 : 사용자의 명령어를 입력받아 기계어 형태로 변환하여 커널에 전달하는 명령어 해석기

 - 커널 : 하드웨어와 관련된 내부적 역할 담당. 운영체제의 핵심적인 기능이 모여있음

 

▶ 운영체제 종류 : 윈도우즈 , 유닉스 , 리눅스 , 맥 , 안드로이드

 ① 윈도우즈 : 마이크로소프트사가 개발한 운영체제

  • 윈도우즈 특징  *지선자오*
    • GUI 제공
    • 선점형 멀티태스킹 방식 제공
    • 자동감지 기능 제공
    • OLE 사용

 ② 유닉스 : 교육 및 연구 기관에서 사용되는 범용 다중 사용자 방식의 시분할 운영체제

  - 1960년대 AT&Bell 연구소, MIT 및 General Electric 사가 공동으로 연구 개발

  - 초기 운영체제는 Multics이고 C언어로 재이식

  • 유닉스 계열 특징  *대다 사이계*
    • 대화식 운영체제 기능 제공
    • 다중 작업 기능 제공
    • 다중 사용자 기능 제공
    • 이식성 제공
    • 계층적 트리 구조 파일 시스템 제공

 ③ 리눅스 : 유닉스 기반 개발, 소스 코드가 공개된 오픈 소스 기반 운영체제

 

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

명령어 설명
ATTRIB 파일 속성 표시하거나 바꿈
CALL 다른 일괄 프로그램 호출
CD (Change Directory) 현재 디렉터리 이름 보여주거나 바꿈
CHKDSK 디스크 검사
CLS 화면 지움
CMD Windows 명령 프로프트 창 열어줌
COMP 두개 이상의 파일 비교
DISKPART 디스크 파티션 속성 표시하거나 구성
ECHO 메시지 표시
ERASE 하나 이상의 파일 지움
EXIT 프로그램 마침

 

▶ 리눅스/유닉스 계열 기본 명령어

 : 쉘에서 입력 가능

  - 최상위 유저 (root) : #

  - 일반 유저 : $

명령어 설명
cat 파일 내용을 화면에 출력
last 로그인/로그아웃 정보 표시
who 현재 접속 사용자 정보 표시
ls 자신이 속해있는 폴더에서 파일 및 폴더 표시
pwd 현재 작업 중인 디렉토리의 절대 경로 출력
rm / cp / mv 파일 삭제 / 파일 복사 / 파일 이동
ps 현재 실행되는 프로세스 목록 출력
chmod / chown 특정 파일 또는 디렉토리의 퍼미션 수정 / 파일이나 디렉토리의 소유자, 소유 그룹 수정
host 도메인 명은 아는데 ip 주소를 모르거나 그 반대인 경우

 

▶ 메모리 관리 기법

*반배할교*

 - 반입 기법 : 메모리로 적재 시기 결정 (When)

 - 배치 기법 : 메모리 적재 위치 결정 (Where)

 - 할당 기법 : 메모리 적재 방법 결정 (How)

 - 교차 기법 : 메모리 교체 대상 결정 (Who)

 

▶ 메모리 배치 기법

 - 최초 적합 (First-fit) : 가용 공간 중 첫 번째 분할에 할당

 - 최적 적합 (Best-fit) : 가용 공간 중 가장 크기가 비슷한 공간 선택

 - 최악 적합 (Worst-fit) : 가용 공간 중 가장 큰 공간에 할당

 

▶ 프로세스 상태

*생준실대완*

 - 생성(Create) 상태 : 프로세스 생성

 - 준비(Ready) 상태 : CPU 할당받을 수 있는 상태

 - 실행(Running) 상태 : 프로세스가 CPU 할당받아 동작 중

 - 대기(Waiting) 상태 : 입출력 처리 등으로 인해 CPU를 양도하고 대기 리스트에서 기다리는 상태

 - 완료(Complete) 상태 : 수행 종료

 

▶ 프로세스 상태 전이

*디타 블웨*

 - 디스패치 (Dispatch) : 실행될 프로세스를 선정하여 CPU 할당

 - 타이머 런 아웃 (=할당 시간 초과) : 지정된 시간이 초과되면 다시 준비 상태로 전이

 - 블록 (=입출력발생) : CPU를 스스로 반납하고 입출력 완료될 때까지 대기 상태로 전이

 - 웨이크 업 : 입출력이 종료되면 준비 상태로 전이

 

▶ 프로세스 스케줄링 주요 용어

 - 서비스 시간 : 프로세스가 결과 산출하기까지 소요되는 시간

 - 응답시간 (반환시간) : 프로세스들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간

  • 응답시간 = 대기시간 + 수행시간
  • Turnaround time / Response time

 - 평균 응답시간 : 프로세스가 결과를 산출하기까지 소용되는 시간 평균

 - 대기시간 : 프로세스가 할당 대기까지 큐에 대기하는 시간

 - 평균 대기시간 : 프로세스가 대기 큐에서 대기하는 평균 시간

 - 응답률 : (대기시간 + 서비스시간) / 서비스시간  => HRN(비선점형 스케줄링) 에서 응답률이 높으면 우선순위 높음

 

▶ 선점형 스케줄링 : 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단 시키고 CPU를 점유하는 방식

*SMMR*

 - SRT : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행

 - 다단계 큐 : 작업들을 여러 종류 그룹으로 분할, 여러 개의 큐를 이용해 하위단계 작업 선점

 - 다단계 피드백 큐 : FCFS + 라운드로빈 스케줄링 기법

 - 라운드 로빈 (Round Robin) : 같은 CPU 점유시간을 할당하고 할당된 시간 내에 처리를 완료하지 못하면 가장 뒤로 보내지고 다음 프로세스로 넘어가는 방식. 선점형 FCFS!!

 

▶ 비선점형 스케줄링 : 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유 불가능한 방식

*우기 HFS*

 - 우선순위 : 우선순위에 따라 CPU 할당 

 - 기한부 : 명시된 시간이나 기한 내 완료되도록 계획

 - HRN : 현재 응답률이 가장 높은 것을 선택. SJF의 약점인 기아현상을 보완한 기법

  • 기아현상 : 시스템 부하가 많아 준비 큐에 있는 낮은 등급의 프로세스가 무한정 기다리는 현상
    • 에이징 : 기아현상을 해결하기 위해 오랫동안 기다린 프로세스에게 우선순위를 높여주도록 처리하는 기법

 - FCFS (FIFO) : 도착한 순서에 따라 CPU 할당

 - SJF : 가장 작은 서비스 시간을 갖는 프로세스가 종료 시까지 자원 점유

 

▶ 반환시간 / 대기시간 계산방법

*반종도 대반서*

반환시간 = 종료시간 - 도착시간

대기시간 = 반환시간 - 서비스시간

 

▶ 가상화 : 물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 리소스를 여러 개로 보이게 하는 기술

 

▶ 가상화의 종류 

 - 플랫폼 가상화 : 호스트 프로그램이 게스트 프로그램을 만들어 마치 독립된 환경을 만들어 낸 것 처럼 보여주는 기법

 - 리소스 가상화 : 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용하는 기법

 

▶ 가상화 기술요소 

 - 컴퓨팅 가상화 : 물리적으로 컴퓨터 리소스를 가상화하여 논리적 단위로 리소스를 활용할 수 있도록 하는 기술 
  ex) 하이퍼바이저

 - 스토리지 가상화 : 스토리지와 서버 사이에 소프트웨어/하드웨어 계층을 추가하여 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술

 - I/O 가상화 : 서버와 I/O 디바이스 사이에 위치하는 미들웨어 계층. 서버의 I/O 자원을 물리적으로 분리하고 효율적인 연결 지원

 - 컨테이너 : 컨테이너화된 애플리케이션들이 단일 운영체제상에서 실행되도록 해주는 기술

 - 분산처리 기술 : 여러 대의 컴퓨터 계산 및 저장능력을 이용하여 대용량 데이터를 처리하고 저장하는 기술

 - 네트워크 가상화 기술 : 중계장치의 가상화를 통한 가상 네트워크를 지원하는 기술

 

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

 

▶ 클라우드 컴퓨팅 분류

*사공하*

 - 사설 클라우드 : 기업 또는 조직 내부에서 보유하고 있는 컴퓨팅 자원을 사용해 내부에 구축되어 운영되는 클라우드

 - 공용 클라우드 : 다중 사용자를 위한 컴퓨팅 자원 서비스를 제공하는 클라우드

 - 하이브리드 클라우드 : 사설 + 공용 클라우드 모두 사용

 

▶ 클라우드 컴퓨팅 유형

*인플소*

 - 인프라형 서비스 (IaaS) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스

 - 플랫폼형 서비스 (PaaS) : 인프라를 생성, 관리하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스 

 - 소프트웨어형 서비스 (SaaS) : 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스

 


ch02 네트워크 기초 활용하기

 

▶ 네트워크 : 원하는 정보를 원하는 수신자나 기기에 정확하게 전송하기 위한 기반 인프라

 

▶ OSI 7 계층 

① 물리 계층 (Physical) : 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환

 - 전송 단위 : 비트 (Bit)

 - 장비 : 허브, 리피터

  • 허브 : 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비
  • 리피터 : 디지털 신호를 증폭시켜주는 역할

② 데이터링크 계층 (Data Link) : 링크 설정과 유지 및 종료 담당. 노드 간 회선제어, 흐름제어, 오류 제어 

 - 전송 단위 : 프레임 (Frame) 

 - 장비 : 브리지, L2 스위치

  • 브리지 : 두 개의 근거리통신망(LAN)을 서로 연결해 주는 통신망 연결 장치
  • L2 스위치 : 출발지에서 들어온 프레임을 목적지 MAC 주소 기반으로 빠르게 전송시키는 통신 장치

 - 프로토콜

  • HDLC : 점대점 방식이나 다중방식의 통신에 사용
  • PPP : 두 통신 노드 간의 직접적인 연결을 위해 일반적으로 사용
  • 프레임 릴레이 : 단순히 데이터 프레임들의 중계기능과 다중화 기능만 수행
  • ATM : 비동기식 시분할 다중화 방식의 패킷형 전송 기술

③ 네트워크 계층 (Network) : 다양한 길이의 패킷 전송, 단말기 간 데이터 전송을 위한 최적화된 경로 제공

 - 전송단위 : 패킷 

 - 장비 : 라우터, 게이트웨이

  • 라우터 : LAN과 LAN / LAN과 WAN을 연결, 최적의 경로 지정
  • 게이트웨이 : 프로토콜을 서로 다른 통신망에 접속할 수 있게 해주는 장치

 - 프로토콜 

  • IP : 송수신간 패킷 단위로 데이터를 교환하는 네트워크에서 정보를 주고받는 데 사용
  • ARP : IP 주소를 MAC 주소로 변환
  • RARP : MAC 주소는 알지만 IP 주소를 모르는 경우 IP 주소 요청을 위해 사용
  • ICMP : IP 패킷 처리시 발생되는 문제를 알려주는 프로토콜 메시지
  • IGMP : 멀티캐스트 그룹 멤버십 구성에 사용
  • 라우팅 프로토콜 : 데이터 전송을 위해 목적지까지 갈 수 있는 여러 경로 중 최적의 경로를 설정

 * 라우팅 프로토콜

  • 정적 라우팅 : 패킷 전송이 이루어지기 전에 경로 정보를 라우터가 미리 저장하여 중개
  • 동적 라우팅 : 라우터의 경로 정보가 네트워크 상황에 따라 동적으로 변경되어 중개
  1. RIP : AS 내에서 사용하는 거리 벡터 알고리즘에 기초하여 개발된 내부 라우팅 프로토콜
    벨만-포드 알고리즘 사용, 15홉 제한, UDP 사용, 30초마다 정보 공유
  2. OSPF : 자신을 기준으로 링크 상태 알고리즘을 적용하여 최단 경로를 찾는 라우팅 프로토콜
    다익스트라 알고리즘 사용
  3. BGP : AS 상호 간 경로 정보를 교환하기 위한 라우팅 프로토콜
  4. 라우팅 알고리즘
    • 거리 벡터 알고리즘 (Distance Vector Algorithm) : 인접 라우터와 정보를 공유하여 목적지까지의 거리와 방향 결정
    • 링크 상태 알고리즘 (Link State Algorithm) : 링크 상태 정보를 모든 라우터에 전달하여 최단 경로 트리 구성

④ 전송 계층 (Transport) : 송수신 프로세스 간 연결, 종단 간 사용자들에게 신뢰성 있는 데이터 전달

 - 전송 단위 : 세그먼트 (Segment)

 - 장비 : L4 스위치

 - 프로토콜 

  • TCP : 신뢰성 보장, 연결 지향적 특징, 흐름 제어, 혼잡 제어   *신연흐혼*
  • UDP : 비신뢰성, 비연결성, 순서화되지 않은 데이터그램 서비스 제공, 실시간 응용 및 멀티캐스팅 가능, 단순헤더

⑤ 세션 계층 (Session) : 송수신간 논리적인 연결 

 - 전송 단위 : 데이터 (Date)

 - 장비 : 호스트

 - 프로토콜

  • RPC : 별도의 원격 제어를 위한 코딩 없이 함수나 프로시저를 실행할 수 있는 프로토콜. 원격 프로시저 호출
  • NetBIOS : 응용계층의 애플리케이션 프로그램에게 API 제공하여 상호 통신할 수 있도록 해주는 프로토콜

⑥ 표현 계층 (Presentation) : 데이터를 사용자가 이해할 수 있는 형태로 만듦, 암/복호화

 - 전송 단위 : 데이터 (Date)

 - 장비 : 호스트

 - 프로토콜 

  • JPEG : 이미지를 위해 만들어진 표준 규격
  • MPEG : 멀티미디어를 위해 만들어진 표준 규격

⑦ 응용 계층 (Application) : 사용자와 네트워크 간 응용서비스 연결, 데이터 생성

 - 전송 단위 : 데이터 (Date)

 - 장비 : 호스트

 - 프로토콜 

  • HTTP : 인터넷에서 데이터를 주고받을 수 있는 프로토콜 (80번 포트)
  • FTP : 서버와 클라이언트 사이의 파일을 전송하기 위한 프로토콜 (20,21번 포트)
  • SMTP : TCP 포트 번호 25번을 사용해 이메일을 보내기 위해 이용
  • POP3 : 이메일 가져오는 데 사용 (메일 내용이 PC에 저장) 
  • IMAP : 이메일 가져오는 데 사용 (메일 내용이 서버에 저장)
  • Telnet : 네트워크 연결에 사용

 

▶ 프로토콜

 - 서로 다른 시스템이나 기기들 간 데이터 교환을 원활히 하기 위한 표준화된 통신규약

 - 컴퓨터가 메시지를 전달하고, 메시지가 제대로 도착했는지 확인, 도착하지 않았을 경우 재전송하는 일련의 방법을 '기술적 은어'를 뜻하는 프로토콜

 

▶ 프로토콜 3요소

*구의타*

 - 구문 (Syntax) : 시스템 간의 정보 전송을 위한 데이터 형식, 코딩, 신호 레벨 등 규정

 - 의미 (Semantic) : 시스템 간의 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정

 - 타이밍 (Timing) : 시스템 간의 정보 전송을 위한 속도 조절, 순서 관리 규정

 

▶ 네트워크 프로토콜 : 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계

 

▶ 프로토콜 특징

 - 단편화 : 작은 블록으로 나누어지는 기법

 - 재조립 : 단편화되어 온 조각들을 원래 데이터로 복원

 - 캡슐화 : 상위 계층의 데이터에 각종 정보를 추가하여 하위 계층으로 보내는 기법

 - 연결 제어 : 데이터의 전송량이나 속도 제어

 - 오류 제어 : 전송 중 잃어버리는 데이터나 오류가 발생한 데이터 검증

 - 동기화 : 송수신 측의 시점을 맞추는 기법

 - 다중화 : 하나의 통신 회선에 여러 기기들이 접속할 수 있는 기술

 - 주소 지정 : 송수신지의 주소를 부여하여 정확한 데이터 전송 보장

 

▶ IPv4 : 데이터를 교환하기 위한 32비트 주소체계를 갖는 네트워크 계층의 프로토콜. 10진수 총 12자리, 네부분으로 나뉨

 - A클래스 : 0~127 , 자유롭게 사용자에게 부여 가능

 - B클래스 : 128~191

 - C클래스 : 192~223

 - D클래스 : 224~239 , 멀티캐스트 용도

 - E클래스 : 240~255 , 연구

 

▶IPv6 : IPv4가 가진 주소 고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해 개발된 128비트 주소체계를 갖는 차세대 인터넷 프로토콜. 

 

▶ IPv4 vs IPv6

구분 IPv4 IPv6
주소길이 32bit 128bit
표시방법 8비트씩 4부분으로 나뉜 10진수
(192.168.10.1)
16비트씩 8부분으로 나뉜 16진수
(2001:0DB8::1428:57ab)
헤더크기 가변 고정
전송방식 *유멀브*
유니캐스트, 멀티캐스트, 브로드 캐스트
*유멀애*
유니캐스트, 멀티캐스트, 애니캐스트

 

▶ IPv4에서 IPv6로 전환 방법

 - 듀얼 스택 : IP 계층에 두가지의 프로토콜이 모두 탑재되어 있고 통신 상대방에 따라 해당 IP 스택 선택

 - 터널링 : IPv4 망에 터널을 만들고 IPv4에서 사용하는 프로토콜로 캡슐화하여 전송

 - 주소변환 : IPv4 망과 IPv6 망 사이에 주소 변환기(게이트웨이)를 사용하여 패킷 변환

 

▶ 유니캐스트 : 1:1로 트래픽 또는 메시지 전송하는 프로토콜

 

▶ 멀티캐스트 : 같은 내용의 데이터를 여러 명의 특정한 그룹의 수신자들에게 동시에 전송할 수 있는 프로토콜

 

▶ 브로드 캐스트 : 하나의 송신자가 같은 서브 네트워크상의 모든 수신자에게 데이터 전송하는 프로토콜

 

▶ 애니캐스트 : 수신자 그룹 안에서 가장 가까운 노드로 연결시키는 전송 프로토콜

 

▶ 패킷 스위칭 : 작은 블록의 패킷으로 데이터를 전송하며, 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 통신 방식

 - X.25 : 패킷 교환망을 통해 패킷을 원활이 전달하기 위한 통신 프로토콜

 - ATM : 비동기 전송모드라고 하는 광대역 전송에 쓰이는 스위칭 기법

 


ch03 기본 개발환경 구축하기

 

▶ 개발환경 인프라 구성 방식

 - 온프레미스 방식 : 외부 인터넷망이 차단된 상태에서 인트라넷망만을 활용하여 개발환경을 구축하는 방식

 - 클라우드 방식 : 클라우드 공급 서비스를 하는 회사들의 서비스를 임대하여 개발환경을 구축하는 방식

 - 하이브리드 방식 : 온프레미스 + 클라우드 혼용

 

▶ 개발 환경 지원도구

 - 요구사항 관리 : 프로젝트 수행 시 정확한 요구사항 정의, 요구사항 관리

 - 설계 : ERD를 통화 자동화된 데이터 모델링, UML 자동 생성

 - 구현 : 개발자의 소프트웨어 구현 시 개발자 편의성 고려

 - 테스트 : 자동 테스트 수행

 - 빌드 : 소프트웨어 빌드 자동화

 - 형상 관리 : 개발 산출물 관리

 - 품질 관리 

 - 이슈 관리 

 - 프로젝트 관리

 

▶ 클라우드 기반 개발환경 인프라 제공 범위

 - 컴퓨팅 환경 : 프로그램을 설치하고 운용할 하드웨어 장비 세팅

 - 스토리지 : 대규모 데이터를 저장, 관리, 전송, 이중화하기 위한 저장 장치 세팅

 - 데이터베이스 : 실데이터를 저장하고 관리하기 위한 데이터베이스 세팅

 - 네트워킹 전송 : 구성된 서비스를 효율적으로 전달하기 위한 환경 세팅

 - 개발자 도구 : 프로그램을 실제 개발하기 위한 제반 환경 구축

 - 보안 환경 구축 : 외부 침입으로부터 시스템과 데이터를 보호하기 위한 환경 구축

 - 응용 기술 세팅 

 - 생산성 향상

댓글