스크립트 언어
1. 스크립트 언어의 개요
- HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것으로 기계어로 컴파일되지 ㅇ낳고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어
- 클라이언트의 웹 브라우저에서 해석되어 실행되는 클라이언트용 언어
- 서버에서 해석되어 실행된 결과만 클라이언트로 보내는 서버용 스크립트 언어
클라이언트용 언어: JavaScript
서버용 언어: ASP, JSP, PHP, Python
2. 스크립트 언어의 장, 단점
- 컴파일 없이 바로 실행하므로 결과를 바로 확인 가능
- 개발 시간이 짧고 소스 코드를 쉽고 빠르게 수정 가능
- 코드를 읽고 해석해야 하므로 실행 속도가 느리고 런타임 오류가 많이 발생
3. 스크립트 언어의 종류
JavaScript(자바스크립트): 웹페이지의 동작을 제어하는 데 사용되는 클라이언트용 스크립트 언어로 클래스가 존재하지 않으며 변수 선언도 필요 없음
ASP(Active Server Page): 서버 측에서 동적으로 수행되는 페이지를 만들기 위한 언어, Windows 계열에서만 수행 가능
JSP(Java Server Page): Java로 만들어진 서버용 스크립트, 다양한 운영체제에서 사용 가능
PHP(Professional Hypertext Preprocessor): 서버용 스크립트 언어로 C JAVA 등과 문법이 유사 LINUX, UNIX, Windows에 사용
Python: 다양한 플랫폼에서 쓸 수 있고 라이브러리 풍부, 유니 코드 문자열을 지원하여 다양한 언어의 문자 처리, 들여쓰기를 사용하여 블록을 구분하는 문법 채용, 다른 언어의 모듈을 연결하는 대화형 인터프리터 언어
Perl: 인터프리터 방식의 프로그래밍 언어
Basic
운영체제의 개념
1. 운영체제(OS: Operating System)의 정의
- 컴퓨터 시스템의 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
#사용자>응용 프로그램>유틸리티>운영체제(OS)>하드웨어
2. 운영체제의 목적
처리 능력(Throughput): 일정 시간 내에 시스템이 처리하는 일의 양
반환 시간(Turn Around Time): 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
사용 가능도(Availability): 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
신뢰도(Reliabiity): 시스템이 주어진 문제를 정확하게 해결하는 정도
3. 운영체제의 기능
- CPU, 메모리 공간, 프로세서(처리기, Processor), 기억장치(주기억장치, 보조 기억장치), 입/출력 장치, 파일 및 정보 등의 자원 관리
- 다중 사용자와 다중 응용프로그램 환경 하에 현재 상태를 파악하고 자원을 효율적으로 분배 및 관리 하기 위해 스케줄링 기능 제공
- 사용자와 시스템 간의 편리한 인터페이스 제공, 입출력 장치와 사용자 프로그램 제어
- 데이터를 관리하고 데이터 및 자원의 공유기능을 제공
- 시스템의 오류 검사 및 복구, 자원 보호 기능 제공
- 입/출력에 대한 보조 기능 제공 -> 가상 계산기 기능 제공
4. 운영체제의 주요 자원 관리
- 프로세스 관리: 프로세스 스케줄링 및 동기화 관리 담당
- 기억장치 관리: 프로세스에게 메모리 할당 및 회수 관리 담당
- 주변장치 관리: 입/출력장치 스케줄링 및 전반적인 관리 담당
- 파일 관리: 파일의 생성과 삭제, 변경, 유지 등의 관리 담당
5. 운영체제의 종류
Windows: Microsoft사가 개발 GUI
UNIX: AT&T, MIT, Generic Electirc 공동 개발 CLI
LINUX: UNIX와 호환 가능, 누구나 제한 없이 재배포 가능 CLI
MacOS: Apple 사가 UNIX를 기반으로 개발 GUI
MS-DOS: Windows 이전에 사용하던 운영체제 CLI
6. Windows의 주요 특징
GUI(Graphic User Interface, 그래픽 사용자 인터페이스)
- 키보드로 명령어를 직접 입력하지 않고 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식
-> 초보자도 쉽게 사용할 수 있게 GUI 채용
선점형 멀티태스킹(Preemptive Mulit-Tasking)
- 동시에 여러 개의 프로그램을 실행하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행 중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식
-> 하나의 응용 프로그램이 CPU를 독점하는 것을 방지할 수 있어 시스템 다운 현상없이 더욱 안정적인 작업을 할 수 있음
PnP(Plug and Play, 자동 감지 기능)
- 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 OS가 자동으로 구성해주는 기능
-> 운영체제가 하드웨어의 규격을 자동으로 인식하여 동작하게 해주므로 PC 주변장치를 연결할 때 사용자가 직접 환경을 설정하지 않아도 됨, PnP기능을 활용하기 위해서는 하드웨어와 소프트웨어 모두 PnP를 지원해야 함
OLE(Object Linking and Embedding)
- 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체(Objects)를 현재 작성 중인 문서에 자유롭게 연결(Linking)하거나 삽입(Embedding)하여 편집할 수 있게 하는 기능
-> OLE로 연결된 이미지를 원본 프로그램에서 수정하거나 편집하면 그 내용이 그대로 해당 문서에 반영됨
255자의 긴 파일명
- VFAT(Virtual File Allocation Table)를 이용해 최대 255자까지 파일 이름 지정 가능
- 파일이름으론 모든 문자 및 공백 사용 가능, 한글의 경우 127까지 저장 가능
개인 사용자(Single-User) 시스템
- 컴퓨터 한 대를 한 사람만이 독점해서 사용
6. UNIX의 개요 및 특징
- 소스가 공개된 개방형 시스템(Open System)
- 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제
- 다중 작업(Mulit-Tasking, 멀티 태스킹) 지원
- 다중 사용자(Mulit-User) 지원
- 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높음
- 계층 구조(트리 구조)의 파일 시스템
-> 하드웨어 > 커널(Kernal) > 쉘(Shell) > 유틸리티(Utiltiy) > 사용자(User)
커널(Kernal)
- UNIX의 가장 핵심적인 부분
- 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행됨
- 하드웨어를 보호하고 프로그램과 하드웨어 간의 인터페이스 역할을 담당
- 프로세스 관리, 기억장치 관리, 파일 관리, 입/출력 관리 등 여러가지 기능 수행
쉘(Shell)
- 사용자의 명령어를 인식하여 프로그램으르 호출하고 명령을 수행하는 명령어 해석기
- 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서 교체 처리가능
- 시스템과 사용자 간의 인터페이스 역할을 담당
- 파이프라인 기능 지원 및 입/출력 재지정을 통해 입/출력의 방향 변경 가능
- 여러 종류의 쉘이 있음
- DOS의 COMMAND.COM과 같은 기능 수행
7. UNIX에서 프로세스 간 통신
- 각 프로세스는 시스템 호출을 통해 커널의 기능을 사용하며, 프로세스 간 통신은 시그널(Signal), 파이프(Pipe), 소켓(Socket) 사용
- 시그널
간단한 메시지를 이용하여 통신하는 것, 초기 UNIX 시스템에서 사용
- 파이프
한 프로세스의 출력이 다른 프로세스의 입력으로 사용되는 단방향 통신 방식
- 소켓
프로세스 사이의 대화를 가능하게 하는 쌍방향 통신 방식
인터넷 및 OSI 참조 모델
1. IP 주소(Internet Protocol Address)
- 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소
- 숫자로 8비트씩 4부분, 총 32비트로 구성됨
A Class
국가나 대형 통신망에 사용 (0 ~ 127) / 255.0.0.0
B Class
중대형 통신망에 사용 (128 ~ 191) / 255.255.0.0
C Class
소규모 통신망에 사용 (192 ~ 223) / 255.255.255.0
D Class
멀티캐스트용으로 사용 (224 ~ 239)/255.255.255.255
E Class
실험점 주소이며 공용되지 않음 (240 ~ 255)
(A class(0 ~ 127) 부터 - 1 하고 /2 씩 내려감)
2. 서브네팅(Subnetting)
- 할당된 네트워크 주소를 다시 여러 개의 작은 네트워크로 나누어 사용하는 것
- 4바이트의 IP 주소 중 네트워크 주소와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크(Subnet Mask)라 하며 이를 변경해 네트워크 주소를 여러개로 분할해 사용
3. IPv6 (Internet Protocol vesion)
128비트 주소
기존 IPv4의 주소 부족 문제를 해결하기 위해 개발
128비트의 긴 주소를 사용하고, IPv4에 비해 자료 전송 속도가 빠름
IPv4와 호환성이 뛰어남
인증성/기밀성/무결성 지원 (=보안성 강화)
유니캐스트/애니캐스트/멀티캐스트 사용
헤더가 40 바이트의 고정된 길이를 가짐
IPv6 확장 헤더를 통해 네트워크 기능 확장이 용이
패킷 크기는 최대값이 정해져있을 뿐 고정되어 있지는 않다
IPv4
32비트 주소
유니캐스트/멀티캐스트/브로드캐스트 사용
헤더가 가변적
4. 도메인 네임(Domain Name)
- 숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것
- 호스트 컴퓨터 이름(www), 소속 기관 이름(hankook), 소속 기관의 종류(co), 소속 국가명(kr)
- 문자로 된 도메인 네임을 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 역할을 하는 시스템을 DNS(Domain Name System)라고 하며 이런 역할을 하는 서버를 DNS 서버라고 함
5. OSI(Open System Interconnection)
1계층 - 물리계층(Physical Layer):
매체 간의 전기적, 기능적, 절차적 기능 정의
주요 프로토콜: Coax, Fiber, Wireless, RS-232C, X.21 (bit)
2계층 - 데이터 링크 계층(DataLink Layer):
인접 시스템(노드)간 물리적 연결을 이용해 데이터 전송, 동기화, 오류 및 흐름제어, 오류검출 및 재전송을 함
주요 프로토콜: Ethernet, SLIP, PPP, FDD1, HDLC, MAC (frame)
3계층 - 네트워크 계층(Network Layer):
단말기 간 데이터 전송을 위한 최적화된 라우팅 제공
주요 프로토콜: IP, IPSec, ICMP, IGMP,ARP, RARP, RIP, OSPF (packet)
4계층 - 전송 계층(Transport Layer):
종단간(End to End) 신뢰성 있는 데이터 전송, 흐름 제어(슬라이딩 윈도우), 오류 및 혼잡 제어
주요 프로토콜: TCP, UDP, ECN, SCTP, DCCP, RTCP (segment)
5계층 - 세션 계층(Session Layer) Various, API:S, SOCKETS
연결 접속(유지), 동기 제어, 동기점(대화)
주요 프로토콜: SSH, TLS
6계층 - 표현 계층(Presentation Layer):
구문 검색, 코드 변환 암/복호화, 데이터 압축, 문맥 관리 기능
주요 프로토콜: SSL, FTP, IMAP, SSH, JPEG, MPEG
7계층 응용 계층(Application Layer):
사용자와 네트워크 간 응용서비스 연결, 데이터 생성, 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송 등
주요 프로토콜: HTTP, FTP, IRC, SSH, DNS, TELNET, SMTP, SNTP (message)
SSH(Secure Shell): 서로 연결되어 있는 컴퓨터 간 원격 명령 실행이나 셀 서비스 등을 수행함
전송되는 데이터는 암호화 됨
키를 통한 인증은 클라이언트의 공개키를 서버에 등록해야 한다
포트는 22번을 사용함
int (*p)[3]은 int[3] 타입
즉 p[0] == &arr[0] 행의 주소 값 (그렇지만 보통 &arr[0] == &arr[0][0] 으로 주소값은 같음)
타입이 중요함
ARP: IP 네트워크 상에서 IP 주소를 MAC 주소로 변환하는 프로토콜
ICMP: IP와 조합하여 통신 중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 하는 프로토콜
PPP: 점대점 데이터링크를 통해 3계층 프로토콜들을 캡슐화시켜 전송하는 프로토콜
데커 알고리즘 (Dekker Algorithm)
- 프로세스가 두 개 일때 상호 배제를 보장하는 최초의 알고리즘
- flag, turn 변수를 사용하여 조정
램퍼드 알고리즘 (Lamport Algorithm)
- n개의 상호 배제 문제를 해결한 알고리즘
- 프로세스 내에서 고유한 번호를 부여하고 번호를 기준으로 우선순위를 정하여 우선순위가 높은 프로세스가 먼저 임계 구역에 진입하도록 구현
피터슨 알고리즘 (Peterson Algorithm)
- 데커 알고리즘을 조금 더 보완한 알고리즘
- turn값을 상대방에게 먼저 넘겨주고 시작
Build = 작성된 Source Code를 실제 기기에서 실행 할 수 있는 소프트웨어로 변환하기 위한 과정
Ant = 아파치 재단에서 개발한 자바의 공식적인 빌드 도구
Kerberos = 컴퓨터 네트워크 인증 암호화 프로토콜
Maven = 아파치 재단에서 Ant 대안으로 개발
Gradle = Ant, Maven의 보완으로 개발된 빌드 도구 (안드로이드 스튜디오 주 빌드 도구)
기억장치 관리
1. 기억장치 관리 전략의 개요
보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기(when), 적재 위치(where) 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위함
#반입(Fetch), 배치(Placement), 할당(Allocation), 교체(Replacement)
2. 반입 전략
- 보조기억장치에 보관중인 프로그램이나 데이터를 언제(when) 주기억장치로 적재할 것인지를 결정하는 전략
- 요구 반입(Demand Fetch): 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
- 예상 반입(Anticipatory Fetch): 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법
3. 배치 전략
새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에(where) 위치시킬 것인지를 결정하는 전략
최초 적합(First Fit)
빈 영역 중에서 첫 번째 분할 영역에 배치
최적 적합(Best Fit)
빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치
최악 적합(Worst Fit)
빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
4. 교체 전략
이미 사용되고 있는 영역 중에서 어느(Who) 영역을 교체할지 결정하는 전략
#FIFO, LRU, LFU, NUR, OPT, SCT
5. 주기억장치 할당의 개념
프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게(How) 할당할지를 정함
연속 할당 기법: 프로그램을 주기억장치에 연속으로 할당하는 기법
단일 분할 할당 기법: 오버레이, 스와핑
오버레이: 보조기억장치에 저장된 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례로 주기억장치에 적재
다중 분할 할당 기법: 고정(정적) 분할 할당 기법, 가변(동적) 분할 할당 기법
분산 할당 기법: 프로그램을 특정 단위의 조각으로 나누어 할당하는 기법
# 페이징(Paging) 기법
# 세그멘테이션(Segmentation) 기법
6. 가상기억장치의 개요
- 보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법
- 주기억장치의 용량보다 큰 프로그램을 실행하기 위해 사용
- 주기억장치의 이용률과 다중 프로그래밍 효율을 높일 수 있음
- 가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업 필요
- 블록 단위로 나누어 사용하므로 연속 할당 방식의 단편화 해결 가능
7. 페이징 기법
- 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법
- 일정한 크기로 나눈 단위를 페이지(Page)라 하고 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임(Page Frame)이라고 함
- 외부 단편화는 발생하지 않으나 내부 단편화 발생
- 주소 변환을 위해 페이지의 위치 정보를 갖고 있는 페이지 맵 테이블(Page Map Table) 필요 -> 페이지 맵 테이블 사용으로 비용 증가, 처리 속도 감소
* 외부 단편화: 남아있는 총 메모리 공간이 요청 메모리 공간보다 크지만 남아 있는 메모리 공간이 연속적으로 위치하지 않아 요청한 메모리를 적재할 수 없는 현상
* 내부 단편화: 남아있는 메모리 영역의 크기가 요청 메모리 보다 커, 요청 메모리 적재 시에 사용되지 않는 메모리가 생기는 것을 의미
8. 세그멘테이션 기법
- 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 기억공간을 절약하기 위해서 사용하는 방법
- 논리적인 크기로 나눈 단위를 세그먼트(Segment)라고 하며 각 세그먼트는 고유한 이름과 크기를 가짐
- 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법
- 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 갖고 있는 세그먼트 맵 테이블(Segment Map Table) 필요
- 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며 이를 위해 기억장치 보호키(Storage Protection Key)가 필요
- 내부 단편화는 발생하지 않으나 외부 단편화 발생
9. 페이지 교체 알고리즘
FIFO(First In First Out) = FCFS(First Come First Service)
각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
LRU(Least Recently Used)
- 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
- 가장 오래 전에 사용된 페이지 교체
LFU(Least Frequently Used)
- 사용 빈도가 가장 적은 페이지를 교체하는 기법
OPT(OPTimal replacement, 최적 교체)
- 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
- 벨레이디(Belady)가 제안한 것으로 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
NUR(Not Used Recently)
- LRU와 비슷한 알고리즘으로 최근에 사용하지 않은 페이지를 교체하는 기법
- 각 페이지마다 두 개의 비트, 참조 비트와 변형 비트 사용
SCR(Second Chance Replacement, 2차 기회 교체)
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것으로 FIFO 기법의 단점을 보완하는 기법
10. 페이지 크기
페이지 크기가 작을 경우
- 페이지 단편화가 감소되고 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어듦
- 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋 유지 가능
- Locality에 더 일치할 수 있기 때문에 기억장치 효율이 높아짐
- 페이지 정보를 갖는 페이지 맵(사상) 테이블의 크기가 커지고 매핑 속도가 늦어짐
- 디스크 접근 횟수가 많아져서 전체적인 입, 출력 시간은 늘어남
페이지 크기가 클 경우
- 페이지가 단편화가 증가하되고 한 개의 페이지를 주기억장치로 이동하는 시간이 늘어남
- 불필요한 내용까지도 주기억장치에 적재될 수 있음
- 페이지 정보를 갖는 페이지 맵(사상) 테이블의 크기가 작아지고, 매핑 속도가 빨라짐
- 디스크 접근 횟수가 줄어들어 전체적인 입, 출력 효율성이 증가됨
11. Locality (지역성, 구역성)
- 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
- 스래싱(Thrashing)을 방지하기 위한 워킹 셋 이론의 기반
- 데닝(Denning) 교수에 의해 구역성의 개념이 증명됐으며 캐시 메모리 시스템의 이론적 근거
시간적 구역성(Temporal Locality): 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음
#Loop(루프), Stack(스택), Subroutine(서브루틴), Counting(카운팅), Totaling(집계)
공간적 구역성(Spatial Locality): 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음
#Array(배열), Sequential Code(순차적 코드)
12. 워킹 셋(Working Set)
- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
- 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정됨
- 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹 셋은 시간에 따라 변경됨
13. 페이지 부재 빈도(PFF: Page Fault Frequnecy) 방식
- 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식
- 페이지 부재(Page Fault)는 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상이며 페이지 부재 빈도는 페이지 부재가 일어나는 횟수를 의미함
14. 프리페이징(Prepaging)
- 처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 미리 한꺼번에 페이지 프레임에 적재하는 기법
-> 기억장치에 들어온 페이지들 중에서 사용되지 않는 페이지가 많을 수도 있음
14. 스래싱(Thrashing)
- 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
-> 전체 시스템 성능 저하
- 다중 프로그래밍(멀티 태스킹)의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고 CPU의 이용률은 급격히 감소됨
스래싱 현상 방지 방법
- 다중 프로그래밍의 정도를 적정 수준으로 유지
- 페이지 부재 빈도(Page Fault Frequency)를 조절해 사용
- 워킹 셋(Working Set)을 유지함
프로세스 및 스케줄링
1. 프로세스(Process)의 정의
- 일반적으로 프로세서(처리기), 즉 CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램인 실행 중인 프로그램을 의미하며 작업(Job), 태스크(Task)라고도 함
프로세스의 정의
- 프로시저가 활동 중인 것
- 비동기적 행위를 일으키는 주체
- 운영체제가 관리하는 실행 단위
- 실행중인 프로그램
- PCB(Process Control Block)을 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로서 디스패치가 가능한 단위
2. PCB(Process Control Block, 프로세스 제어 블록)
프로세스 고유 식별자: 프로세스를 구분할 수 있는 고유의 번호
프로세스의 현재 상태: 준비, 대기, 실행 등의 프로세스 상태
프로그램 카운터: 실행될 명령어의 주소를 가지고 있는 레지스터
CPU 레지스터 정보: 누산기, 인덱스 레지스터, 범용 레지스터 등에 대한 정보
스케줄링 및 프로세스의 우선순위: 스케줄링 정보 및 프로세스가 실행될 우선 순위
계정 정보: CPU 사용 시간, 실제 사용 시간, 한정된 시간
입, 출력 상태 정보: 입, 출력 장치, 개방된 파일 목록
메모리 장치 관리 정보: 기준 레지스터, 페이지 테이블에 대한 정보
포인터: 프로세스가 위치한 메모리 및 할당된 자원에 대한 포인터
3. 프로세스 상태 전이

4. 프로세스 상태 전이 관련 용어
디스패치(Dispatch): 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
#준비(Ready) -> 실행(Run)
Wake Up: 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
#대기(Wait) -> 준비(Ready)
스풀링(Spooling): 나중에 한꺼번에 입, 출력하기 위해 디스크에 저장하는 과정
5. 스레드(Thread)
- 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 단위
- 프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 함
- 동일 프로세스 환경에서 서로 독립적인 다중 수행 가능
-> 하나의 프로세스를 여러 개의 스레드로 생성해 병행성 증진 및 성능과 처리율 향상
프로그램 응답 시간 단축과 기억장소의 낭비가 줄어들고 통신이 향상됨
단일 스레드: 하나의 프로세스에 하나의 스레드가 존재하는 경우
다중 스레드: 하나의 프로세스에 하나 이상의 스레드가 존재하는 경우
커널 수준 스레드의 장점
- 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다
- 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있다
- 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능하다
사쟝자 수준 스레드의 장점
- 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다
6. 스케줄링(Scheduling)의 개요
- 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
장기 스케줄링(작업 스케줄링, 상위 스케줄링)
어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
작업 스케줄러에 의해 수행됨
중기 스케줄링
어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업
단기 스케줄링 (프로세서 스케줄링, 하위 스케줄링)
프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업
-> 프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행됨
문맥 교환(Context Switching): 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것
7. 스케줄링의 목적
- 공정성: 모든 프로세스에 공정하게 할당
- 처리량 증가: 단위 시간당 프로세스 처리량 증가
- CPU 이용률 증가: CPU 낭비 시간을 줄이고 사용되는 시간 비율 증가
- 우선순위 제도: 우선순위가 높은 프로세스 먼저 실행
- 오버헤드 최소화: 오버헤드 최소화
- 응답시간(Response Time, 반응시간) 최소화: 작업 지시 및 반응 시작 시간 최소화
- 반환 시간(Turn Around Time) 최소화: 제출한 시간부터 실행 완료 시간 최소화
- 대기 시간 최소화: 준비상태 큐에서 대기하는 시간 최소화
- 균형 있는 자원의 사용: 메모리 입, 출력 장치 등의 자원을 균형 있게 사용
- 무한 연기 회피: 자원을 사용하기 위해 무한정 연기되는 상태 회피
-> CPU 이용률, 처리율, 반환 시간, 대기 시간, 응답 시간
8. 프로세스 스케줄링의 기법
선점(Preemptive) 스케줄링: 하나의 프로세스가 CPU를 할당받아 실행하고 있을 떄 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 선점할 수 있는 기법
- 우선순위가 높은 프로세스 빠르게 처리 가능
- 빠른 응답 시간을 요구하는 대화식 시분할 시스템(Time Sharing System)에 사용됨
- 많은 오버헤드 발생
- 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록 필요
# Round Robin, MLQ, MFQ, SRT(Shortest Remaining Time)
비선점(Non-Preemptive) 스케줄링: 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 선점할 수 없는 기법
- CPU를 할당 받으면 해당 프로세스가 완료될 때까지 CPU 사용
- 모든 프로세스에 대한 요구를 공정하게 처리 가능
- 프로세스 응답 시간의 예측 용이
- 일괄 처리 방식에 적합
- 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우 발생
-> 가뭄 현상
# 우선순위(Priority), 기한부(Deadline), FCFS(FIFO), SJF(Shortest Job First), HRN
*HRN(Highest Response-ratio Next)
SJF 기법의 가뭄 현상을 보완하기 위한 방식으로 대기 시간이 긴 프로세스일 경우 우선순위가 높아지고 우선순위 계산식의 수치가 가장 높은 것부터 낮은 순으로 우선순위를 부여해 긴 작업과 짧은 작업 간의 지나친 불평등을 해소함
(대기시간 + 서비스 시간) / 서비스 시간
네트워크 관련 장비 및 프로토콜
1. 네트워크 관련 장비
게이트웨이(Gateway): 전 계층의 프로토콜 구조가 다른 네트워크의 연결 수행
라우터(Router): 브리지와 같이 LAN과 LAN의 연결 기능에 데이터 전송의 최적 경로를 선택할 수 있는 기능이 추가된 것 -> 네트워크 계층(Ne)
스위치(Switch): 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치, 하드웨어 기반으로 처리해서 전송 속도가 빠름 -> 데이터링크 계층(Da)
브리지(Bridge): LAN과 LAN을 연결하거나 LAN 안에서의 컴퓨터 그룹을 연결하는 기능 수행, MAC 브리지라고도 함 -> 데이터링크 계층(Da)
리피터(Repeater): 신호가 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송하는 역할 수행 -> 물리 계층(Phy)
허브(Hub): 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치 -> 물리 계층(Phy)
2. 프로토콜의 정의
서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약
3. 프로토콜의 기본 요소
구문(Syntax): 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정
의미(Semantics): 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
타이밍(Timing): 두 기기 간의 통신 속도 메시지의 순서 제어 등을 규정
TCP/IP
1. TCP/IP(Transmission Control Protocol/Internal Protocol)의 개요
인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜
TCP
- OSI 7계층의 전송 계층(4계층)에 해당
- 신뢰성 있는 연결형 서비스 제공
- 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능 제공
- 스트림(Stream) 전송 기능 제공
IP
- OSI 7계층의 네트워크 계층(3계층)에 해당
- 데이터 그램을 기반으로 하는 비연결형 서비스 제공
- 패킷의 분해/조립 주소 지정, 경로 선택 기능(Routing) 제공
- 체크섬 기능으로 헤더 체크섬만 제공
- best effort 원칙에 따른 전송 기능을 제공
- Header Length는 IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시
- Packet Length는 IP 헤더를 제외한 패킷 전체의 길이를 나타내며 최대 크기는 2^16 - 1 비트
(IPv4에서 Packet Length는 IP 헤더를 포함한 전체 패킷 길이를 나타내며 최대 크기는 2^16 - 1)
- Time To Live는 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것
- Version Number는 IP 프로토콜의 버전번호를 나타낸다

3. 응용 계층의 주요 프로토콜
HTTP(Hypertext Transfer Protocol): HTML 문서를 송/수신하기 위한 표준 프로토콜
FTP(File Transfer Protocol): 파일을 주고 받을 수 있는 원격 파일 전송 프로토콜
TELNET: 멀리 떨어져 있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스
-> 가상의 터미널 기능 수행
SMTP(Simple Mail Transfer Protocol): 전자 우편을 교환하는 서비스
SNMP(Simple Network Management Protocol): TCP/IP의 네트워크 관리 프토콜로 라우터(Ne), 허브(Phy) 등 네트워크 정보를 네트워크 관리 시스템에 보내는 데 사용되는 표준 통신 규약
DNS(Domain Name System): 도메인 네임을 IP 주소로 매핑(Mapping)하는 시스템
4. 전송 계층의 주요 프로토콜
TCP(Transmission Control Protocol)
- 신뢰성 있는 연결형 서비스 제공
- 순서 제어, 오류 제어, 흐름 제어 기능 제공 -> 투명성
- 스트림(Stream) 전송 기능 제공
- 양방향 연결(Full Duplex Connection)형 서비스 제공
- 가상 회선 연결 형태의 서비스 제공
UDP(User Datagram Protocol)
- 신뢰성 보다는 속도가 중요시되는 네트워크에서 사용
- 실시간 전송에 유리함
- 데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스 제공
- TCP에 비해 단순한 헤더 구조를 가지므로, 오버헤드 적음
* UDP 헤더: Source Port, Destination Port, Length, Checksum, Data
RTCP(Real-Time Control Protocol)
- 패킷의 전송 품질을 제어하기 위한 제어 프로토콜
- 세션에 참여한 각 참여자들에게 주기적으로 제어 정보 전송
- 데이터 패킷과 제어 패킷의 다중화(Multiplexing) 제공
-> 하위 프로토콜
- 최소한의 제어와 인증 기능만을 제공하고 항상 32비트의 경계로 끝남
5.인터넷 계층의 주요 프로토콜
IP(Internet Protocol)
- 전송할 데이터에 주소를 지정하고, 경로 설정 기능을 함
- 비연결형인 데이터그램 방식을 사용해 신뢰성 보장 x
ICMP(Internet Control Message Protocol)
- IP와 조합하여 통신 중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 하며 헤더는 8Byte로 구성됨
IGMP(Internet Group Management Protocol)
멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지를 위해 사용됨
ARP(Address Resolution Protocol)
호스트의 IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC Address)로 바꿈
#IP 주소 -> MAC 주소
RARP(Reverse Address Resolution Protocol)
ARP와 반대로 물리적 주소(MAC Address)를 IP주소로 변환하는 기능을 함
#MAC 주소 -> IP 주소
6. 네트워크 액세스 계층의 주요 프로토콜
Ethernet(IEEE 802.3): CSMA/CD 방식의 LAN
IEEE 802: LAN을 위한 표준 프로토콜
HDLC: 비트 위주의 데이터 링크 제어 프로토콜
X.25: 패킷 교환망을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜
RS-232C: 공중 전화 교환망(PSTN)을 통한 DTE와 DCE 간의 인터페이스를 제공하는 프로토콜
4과목 추가정리
1. 은행가 알고리즘 (Banker's Algorithm)
- 교착 상태의 해결 방법 중 Avoidance(회피) 사용
2. 교착 상태 발생의 필요 충분 조건
- 상호 배제
- 점유와 대기
- 환형 대기
- 비선점
3. IEEE 802.11e
- IEEE 802.11 워킹 그룹의 무선 LAN 표준화 현황 중 QoS(Quality of Service) 강화를 위해 MAC 지원 기능을 채택한 것
4. JAVA 언어의 접근 제한자
public: 모든 접근 허용
protected: 같은 패키지(폴더)에 있는 객체와 상속관계의 객체들만 접근 허용
default: 같은 패키지(폴더)에 있는 객체들만 접근 허용
private: 현재 객체 내에서만 접근 허용
5. 배열의 초기화
6. 페이지 결함
7. UNIX 명령어
cat: 파일 내용 화면 표시 = TYPE(windows 명령어)
chdir: 현재 사용할 디렉터리의 위치 변경 = CD
chmod: 파일의 사용 허가 지정, 파일의 속성 변경 = ATTRIB
chown: 소유자 변경, chnage own
exec: 새로운 프로세스 수행, execute
find: 파일 찾기
fork: 새로운 프로세스 생성, 하위 프로세스 호출 및 프로세스 복제 명령
fsck: 파일 시스템 검사 및 보수, filesystem check
ls: 현재 디렉터리 내의 파일 목록 확인, list = DIR
mout, unmount: 파일 시스템 마운팅/마운팅 해제
8. 서브넷(Subnet)
200.1.1.0/24 네트워크를 FLSM 방식을 이용하여 10개의 subnet으로 나누고 ip subnet -zero를 적용했다. 이때 서브네팅된 네트워크 중 10번째 네트워크의 broadcast IP 주소는?
FLSM 방식: 모든 서브넷 크기를 똑같이 나눔
ip subnet-zero: 첫번째 서브넷도 사용 가능
서브넷 마스크: IP 주소에서 네트워크 부분과 호스트 부분을 구분하는 값
9. 소프트웨어 취약점
- 메모리를 다루는 데 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점 -> 버퍼 오버플로
*STA(station)
네트워크에 연결된 장치 하나
*collision Domain
동시에 신호를 보내면 충돌이 발생하 수 있는 영역
*CSMA/CD(Carrier Sense Multiple Access / Collision Detection)
1. 선이 비었는지 확인
2. 비었으면 전송
3. 전송 중 충돌 감지
4. 충돌하면 멈추고 다시 시도
유선 LAN에서 사용
*CSMA/CA( Carrier Sense Multiple Access / Collision Avoidance)
1. 전송 전 대기
2. 랜덤 시간 기다림
3. RTS/CTS 신호로 알림
4. 전송
wifi 에서 사용
5. 라우팅 프로토콜(Network, 3계층)
RIP(Routing Information Protocol): IGP(Interior Gateway Protocol)로 Bellman-Ford 알고리즘을 이용하여 최적의 경로를 설정하는 소규모 프로토콜
- 최대 홉(Hop) 수를 15로 제한
- 거리 벡터 프로토콜이라고도 함
OSPF(Open Shortest Path First): IGP(Interior Gateway Protocol)로 RIP의 단점 개선을 위해 daijikstra 알고리즘 및 Link Static 기반으로 최단경로를 찾는 대규모 프로토콜
BGP(Border Gateway Protocol): 자치 시스템 간의 라우팅 프로토콜로 EGP(Exterior Gateway Protocol)의 단점을 보완하기 위해 만들어짐
초기에는 BGP 라우터들이 연결될 때는 전체 경로를 나타내는 라우팅 테이블을 교환하고 이후에는 변화된 정보만 교환