1. 운영체제 개념
> 운영체제
- 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
- 컴퓨터 사용자와 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어 일종
- 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경 제공
- 종류
> Windows, UNIX, LINUX, MacOS, MS-DOS 등
> 목적 : 처반사신
- 처리능력 : 일정 시간 내에 시스템이 처리하는 일의 양
- 반환 시간 : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
- 사용 가능도 : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
- 신뢰도 : 주어진 문제를 정확하게 해결하는 정도
> 운영 체제 기능
- 프로세서, 기억장치, 입출력장치, 파일 및 정보 등의 자원관리
- 자원의 스케줄링 기능
- 인터페이스 제공
- 각종 하드웨어와 네트워크를 관리 제어
- 데이터 관리, 데이터 및 자원의 공유 기능 제공
2. 운영체제 종류
> Windows
- 마이크로소프트 사가 개발
- 특징
: GUI - 마우스로 모든 작업을 수행하는 방식
: 선점형 멀티태스킹
- 동시에 여러 개의 프로그램을 실행하는 멀티태스킹
- 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행중 문제가 발생하면 프로그램을 강제종료 시키고
모든 시스템 자원을 반환하는 방식
: PnP(Plug and Play)
- 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성해 주는 기능
: OLE(Object Linking and Embedding)
- 여러 응용프로그램에서 작성된 문자나 그림의 개체를 현재 작성 중인 문서에 자유롭게 연결(Linking) 하거나
삽입(Embedding)하여 편집할 수 있게 하는 기능
: 255자의 긴 파일명 - \ / * ? " < > | 를 제외한 모든 문자 및 공백을 사용하여 최대 255자 까지 파일 이름 지정가능
: Single-User 시스템 - 컴퓨터 한 대를 한 사람만이 독점하여 사용
> UNIX
- AT&T 벨 연구소, MIT, General Electric이 공동 개발
- 특징
: 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제
: 개방형 시스템
: C언어로 작성되어 있어 이식성이 높고 장치, 프로세스간의 호환성이 좋음
: 다중 사용자(Multi-User), 다중 작업(Multi-Tasking) 지원
: 트리 구조의 파일 시스템
- 구성
1) 커널(kernel)
: 하드웨어 보호 및 프로그램과 하드웨어 간의 인터페이스 역할 담당
: UNIX의 핵심
: 프로세스 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러 가지 기능 수행
2) 쉘(Shell)
: 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
: 시스템과 사용자 간의 인터페이스 담당
: 종류 - Bouren Shell, C Shell, Korn Shell 등
3) 유틸리티 프로그램(Utility Program)
: 일반 사용자가 작성한 응용 프로그램을 처리하는데 사용
: DOS에서의 외부 명령어에 해당
: 종류 - 에디터, 컴파일러, 인터프리터, 디버거 등
> GNU
- 리처드 스톨먼의 자유 소프트웨어 재단에서 진행한 OS 프로젝트
- GNU is not UNIX
> LINUX
- 리누스 토발즈가 UNIX를 기반으로 개발한 운영체제
- 프로그램 소스 코드가 무료로 공개되어 있어 프로그래머가 원하는 기능 추가 가능
- 다양한 플랫폼에 설치하여 사용이 가능, 재배포 가능
- UNIX와 완벽히 호환되며 대부분의 특징이 UNIX와 동일
> MacOS
- 애플이 UNIX를 기반으로 개발한 운영체제
- 애플 사에서 생산하는 제품에서만 사용이 가능
- 드라이버 설치 및 install과 uninstall이 단순
> Android
- 구글이 개발한 리눅스 커널 기반의 개방형 모바일 운영체제
- 모든 코드가 공개된 개방형 소프트웨어
- 자바와 코틀린으로 애플리케이션 작성
- 스마트폰 등의 휴대용 장치에서 주로 사용
> iOS
- 애플이 개발한 유닉스 기반의 모바일 운영체제
- 타사 제품은 탑재 불가능
3. 기억장치 관리
> 기억장치 관리 전략
- 한정된 주기억장치의 공간을 효율적으로 사용하기 위함
- 반(언제)배(어디에)교( : 반입(Fetch)전략, 배치(Placement)전략, 교체(Replacement) 전략
> 반입 전략(Fetch)
- 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지 결정
- 기법
1) 요구 반입(Demand Fetch) : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재
2) 예상 반입(Anticipatory Fetch) : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재
> 배치 전략(Placement)
- 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지 결정
- 기법
1) 최초 적합(First-Fit) : 빈 영역 중 첫 번째 분할 영역에 배치
2) 최적 적합(Best-Fit) : 빈 영역 중 단편화를 가장 작게 남기는 분할 영역에 배치
3) 최악 적합(Worst-Fit) : 빈 영역 중 단편화를 가장 많이 남기는 분할 영역에 배치
- 단편화
: 주기억장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우,
분할된 영역이 할당받은 것에 비해 작거나 커서 생기는 빈 기억공간을 의미
: 외부 단편화 - 분할된 영역이 할당될 프로그램의 크기보다 작기 때문에 프로그램이 할당될 수 없어
사용되지 않고 빈 공간으로 남아있는 분할된 전체 영역
: 내부 단편화 - 분할된 영역이 할당될 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않고 남아있는 빈공간
> 교체 전략(Replacement)
- 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지 결정하는 전략
- 종류
: FIFO - First In First Out
: OPT - 앞으로 가장 오랫동안 사용되지 않을 페이지 교체
: LRU - Least Recently Used : 가장 오랫동안 사용되지 않은 페이지 교체
: LFU - Least Frequently Used : 참조 횟수가 가장 작은 페이지 교체
: NUR - Not Used Recently : 최근에 사용하지 않은 페이지 교체
: SCR - Second Chance Replacement : FIFO 방식에 R(Reference) 비트를 추가하여, R이 1인 경우 한 번 기회를 더 줌
: MFU - Most Frequently used : 참조 횟수가 가장 많은 페이지 교체
4. 가상기억장치 구현
- 가상기억장치 (Virtual Memory)
: 보조기억장치의 일부를 주기억장치처럼 사용하는 것
: 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용
: 프로그램을 여러 개의 작은 블록 단위로 나누어 가상기억장치에 보관해놓고,
프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리
: 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있음
: 블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생할 수 있는 단편화 해결 가능
- 구현 방법
1) 페이징(Paging) 기법
- 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후, 주기억 장치의 영역에 적재시켜 실행
- 페이지 : 프로그램을 일정한 크기로 나눈 단위 = 1 ~ 4KB
- 프레임 : 페이지 크기로 일정하게 나누어진 주기억장치의 단위
- 외부 단편화는 발생하지 않음 / 내부 단편화는 발생
- 주소 변환을 위해 페이지 맵 테이블 필요
- 페이지 맵 테이블 사용으로 비용이 증가하고, 처리 속도가 감소
2) 세그멘테이션(Segmentation) 기법
- 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행
- 세그먼트(Segment) : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위
: 각 세그먼트는 고유한 이름과 크기를 가짐
- 기억 공간을 절약하기 위해 사용
- 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블이 필요
- 내부 단편화는 발생하지 않음 / 외부 단편화는 발생
5. 페이지 교체 알고리즘
> 페이지 교체 알고리즘
- 페이지 부재(Page Falut) : CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우
: 디스크에서 주기억장치로 해당 페이지를 가져와야 함
- 페이지 부재가 발생 시 주기억 장치의 모든 페이지 프레임이 사용중일때, 어떤 페이지 프레임을 교체할 것인지 결정하는 기법
- 페이지 크기가 작음 = 단편화 감소 = 페이지 이동시간 감소 = 매핑 속도 증가 = 입출력시간 증가
- 페이지 크기가 큼 = 단편화 증가 = 페이지 이동시간 증가 = 매핑 속도 감소 = 입출력시간 감소
> OPT(Optimal replacement, 최적 교체)
- 앞으로 가장 오랫동안 사용하지 않을 페이지 교체
- 벨레이디가 제안
- 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
> FIFO(First In First Out)
- 가장 먼저 들어와 가장 오래 있었던 페이지 교체
> LRU(Least Recently Used)
- 최근에 가장 오랫동안 사용하지 않은 페이지 교체
- 각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현시점에서 가장 오랫동안 사용하지 않은 페이지 교체
> LFU(Least Frequently Used)
- 사용 빈도가 가장 적은 페이지 교체
> NUR(Not Used Recently)
- 최근 사용하지 않은 페이지 교체
- LRU에서 나타나는 시간적 오버헤드를 줄일 수 있음
- 최근 사용 여부 확인을 위해 참조비트(Reference Bit)와 변형비트(Dirty Bit, Modified Bit)가 각 페이지마다 사용됨
- 순서 결정 (참조 비트, 변형 비트)
1) (0, 0) > 교체순서 : 1
2) (0, 1) > 교체순서 : 2
3) (1, 0) > 교체순서 : 3
4) (1, 1) > 교체순서 : 4
> SCR(Second Chance Replacement, 2차기회 교체)
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법
- FIFO의 단점 보완
> 가상기억장치 기타 관리 사항
- 페이지 크기
1) 페이지의 크기가 작을 경우
- 페이지 단편화 감소
- 페이지를 주기억장치로 이동시키는 시간 감소
- 효율적인 워킹 셋 유지
- 페이지 맵 테이블의 크기가 커짐
- 매핑 속도가 늦어짐
- 디스크 접근 횟수가 많아짐
- 입 출력 시간이 늘어남
2) 페이지의 크기가 클 경우
- 페이지 단편화 증가
- 페이지를 주기억장치로 이동시키는 시간
- 페이지 맵 테이블의 크기가 감소
- 매핑 속도가 빨라짐
- 디스크 접근 횟수가 줄어들음
- 입 출력 시간이 감소함
- Locality(국부성, 지역성, 구역성, 국소성)
: 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
: 스래싱을 방지하기 위한 워킹 셋 이론의 기반
: 가상기억장치 관리와 캐시 메모리 시스템의 이론적 근거
: 데닝 교수에 의해 증명됨
: 종류
1) 시간 구역성(Temporal Locality) - 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스 하는 현상
2) 공간 구역성(Spatial Locality) - 프로세스 실행 시 일정 위치의 페이지를 집중적으로 엑세스 하는 현상
- 워킹 셋 (Working Set)
: 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
: 데닝이 제안한 프로그램의 움직임에 대한 모델
: 프로그램의 Locality 특징을 이용
: 자주 참조되는 워킹 셋을 주기억장치에 상주시켜 페이지 부재 및 페이지 교체현상이 줄어들어 프로세스의 기억장치 사용 안정화
- 스래싱(Thrashing)
: 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
: 다중 프로그래밍 시스템, 가상기억장치 사용 시스템에서 하나의 프로세스 수행 중 페이지 부재가 자주 발생하면 나타남
: 전체 시스템의 성능이 저하됨
: 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만,
더욱 정도가 커지면 스래싱이 나타나고, CPU의 이용률은 급감함
6. 프로세스 개요
> 프로세스 : 실행중인 프로그램 의미
> PCB(Process Control Block) : 프로세스 제어블록
- 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
> 프로세스 상태 전이
- 상태 용어
~ 제출(submit) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
~ 접수(hold) : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
~ 준비(ready) : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
~ 실행(run) : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
~ 대기(wait), 블록(block) : 프로세스 입출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고,
입출력 처리가 완료될 때까지 대기 상태
~ 종료(terminate, exit) : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태
- 전이 용어
~ Dispatch : 준비상태에서 실행상태로 전이
~ Wake Up : 입출력 작업이 완료 되어 대기상태에서 준비상태로 전이
~ Spooling : 입출력장치의 공유 및 상대적으로 느린 처리속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해
입출력할 데이터를 직접 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
~ Traffic Controller(교통량 제어기) : 프로세스의 상태에 대한 조사와 통보 담당
- 스레드(Thread)
: 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위, 프로세스 내에서의 작업 단위
: 단일 스레드 - 하나의 프로세스에 하나의 스레드
: 다중 스레드 - 하나의 프로세스에 하나 이상의 스레드
: 프로세스의 일부 특성을 갖고 있어 경량 프로세스라고도 함
: 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당함
7. 스케쥴링
> 스케줄링
- 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 종류
1) 장기 스케줄링 : 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
2) 중기 스케줄링 : 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업
3) 단기 스케줄링 : 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업
> 비선점 스케줄링(Non-Preemptive)
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- 프로세스가 CPU를 할당 받으면 완료될 때까지 사용
- 프로세스 응답 시간의 예측이 용이
- 일괄 처리 방식에 적합
- 종류 : FCFS, SJF, 우선순위, HRN, 기한부 등
> 선점 스케줄링(Preemptive)
- 우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
- 우선순위가 높은 프로세스를 빠르게 처리할 수 있음
- 주로 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용
- 많은 오버헤드 발생
- 종류 : Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등
8. 스케쥴링 알고리즘
> FCFS(First Come First Service, 선입선출) = FIFO
- 준비상태 큐에 도착한 순서에 따라 차례로 CPU 할당
- 가장 간단한 알고리즘
- 대기시간 : 이전 프로세스까지의 진행시간의 합
- 반환시간 : 프로세스의 대기 시간 + 실행 시간
> SJF(Shortest Job First, 단기 작업 우선)
- 준비상태 큐에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU 할당
- 대기시간, 반환시간은 FCFS와 동일
> HRN(Highest Response-ratio Next) : 대서/서
- 대기 시간과 서비스 시간을 이용
- 실행 시간이 긴 프로세스에 불리한 SJF 기법 보완
- 우선순위를 계산하여 가장 높은 것부터 낮은 순으로 우선순위 부여
- 우선순위 = 대기시간 + 서비스 시간 / 서비스 시간
> RR(Round Robin)
- 시간 할당량(Time Slice, Quantum) 동안만 실행한 후, 다음 프로세스에게 CPU를 넘기는 기법
- 시분할 시스템을 위해 고안된 방식
- 할당되는 시간이 클 경우 FCFS 기법과 같아지고,
작을 경우 문맥 교환 및 오버헤드가 자주 발생되어 요청 작업을 신속히 처리하기 어려움
- 할당은 들어오는 순서대로 진행
- 대기시간 : 프로세스의 가장 마지막 실행이 시작되기 전까지의 진행 시간, 이때 실행된 시간은 제외
- 반환시간 : 프로세스가 완료되는 시간을 이용하여 구함
> SRT(Shortest Remaining Time)
- 현재 실행중인 프로세스의 남은 시간과 새로 도착한 프로세스의 실행 시간을 비교하여
가장 짧은 실행 시간을 요구하는 프로세스에게 CPU 할당
- 시분할 시스템에 유용
- 준비상태 큐에 있는 각 프로세스의 실행 시간을 추적하여 보유하고 있어야 하므로 오버헤드 증가
- 대기시간 : 완료 시간 - 도착시간 - 실행시간
- 반환시간 : 프로세스가 완료되는 시간
9. 교착상태(Dead Lock)
> 교착상태
- 상호배제에서 나타나는 문제점
- 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
> 교착상태 발생 필요충분 조건(상호가 선점하고, 환형이가 점유 대기한다)
- 상호배제(Mutual Exclusion) : 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함
- 점유와 대기(Hold and Wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 사용되고 있는 자원을 점유하기 위해
대기하는 프로세스가 있어야 함
- 비선점(Non-Preemptive) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함
- 환형 대기(Circular Wait) : 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어
자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함
> 교착상태 해결방법(예방 못하면 회복, 발견 못하면 회피)
1) 예방 기법(Prevention)
- 교착상태가 발생하지 않도록 사전에 시스템을 제거
- 교착상태 발생 4가지 조건 중 하나를 제거하여 수행
- 자원의 낭비가 가장 심함
2) 회피 기법(Avoidance)
- 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피함
- 은행원 알고리즘이 대표적
: 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래
3) 발견 기법(Detection)
: 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견
: 교착상태 발견 알고리즘과 자원 할당 그래프 등을 사용 가능
4) 회복 기법(Recovery)
: 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복
10. 운영체제 기본 명령어
| Window 명령어 | Unix/Linux 명령어 | 기능 |
| DIR | ls | 현재 디렉토리의 파일 목록 표시 |
| COPY | cp | 파일 복사 |
| DEL | rm | 파일 삭제 |
| TYPE | cat | 파일의 내용을 표시 |
| REN | 파일의 이름을 변경 | |
| MD | mkdir | 디렉터리 생성 |
| - | rmdir | 디렉터리 삭제 |
| CD | cd | 동일한 드라이브에서 디렉터리 위치 변경 |
| CLS | clear | 화면의 내용을 지움 |
| ATTRIB | - | 파일의 속성을 변경 |
| - | chmod | 파일의 보호 모드를 설정하여 파일의 사용 허가 지정 |
| - | chown | 파일 소유자와 그룹 변경 |
| FIND | - | 파일에서 문자열 찾기 |
| - | find | 파일을 찾기 |
| CHKDSK | - | 디스크 상태 점검 |
| - | fsck | 파일 시스템을 검사하고 보수 |
| FORMAT | - | 디스크 표면을 트랙과 섹터로 나누어 초기화 |
| MOVE | mv | 파일 이동 |
| - | kill | PID(프로세스 고유번호)를 이용하여 프로세스 종료 |
| - | killall | 프로세스의 이름을 이용하여 프로세스 종료 |
| - | fork | 새로운 프로세스 생성 |
| - | uname | 시스템의 이름과 버전, 네트워크 호스트명 등의 시스템 정보 표시 |
| - | ps | 현재 실행중인 프로세스 표시 |
| - | pwd | 현재 작업중인 디렉터리 경로 표시 |
| - | top | 시스템의 프로세스와 메모리 사용 현황 표시 |
| - | who | 현재 시스템에 접속해 있는 사용자 표시 |
12. Secure OS
> Secure OS
- 보안 기능을 갖춘 커널을 이식하여 외부의 침입으로부터 시스템 자원을 보호하는 운영체제
- 보안 커널 : 보안 기능을 갖춘 커널, TCB 기반으로 참조 모니터의 개념을 구현하고 집행
- 보호방법 구현(난이도순)
1) 암호적 분리(cryptographic Separation) : 내부 정보를 암호화 하는 방법
2) 논리적 분리(Logical Separation) : 프로세스의 논리적 구역을 지정하여 구역을 벗어나는 행위를 제한
3) 시간적 분리(Temporal Separation) : 동일 시간에 하나의 프로세스만 수행되도록 해, 동시실행으로 발생하는 보안 취약점 제거
4) 물리적 분리(Physical Separation) : 사용자별로 특정 장비만 사용하도록 제한
- Secure OS의 보안 기능(식임객 완신감 > 식임댁 왔는감?)
: 식별 및 인증, 임의적/강제적 접근통제, 객체 재사용 보호, 완전한 조정, 신뢰 경로, 감사 및 감사기록 축소
> 참조 모니터(Reference Monitor)
- 보호 대상 객체에 대한 접근통제를 수행하는 추상머신
- 이를 구현한 것이 보안 커널
- 보안 커널 데이터베이스(SKDB; Security Kernel Database)를 참조하여 객체에 대한 접근 허가 여부 결정
- 참조 모니터와 보안 커널 특징(격리 검증 완(전)성!)
1. 격리성(Isolation) - 부정 조작이 불가능 해야 함
2. 검증가능성(Verifiability) - 적절히 구현되었다는 것을 확인할 수 있어야 함
3. 완전성(Completeness) - 우회가 불가능 해야 함
'정보처리기사 > 실기' 카테고리의 다른 글
| 저작권 및 보안 (5) | 2025.07.19 |
|---|---|
| 인터넷 (5) | 2025.07.18 |
| 기타 응용 SW 기초 기술활용 (3) | 2025.07.17 |
| 코딩 - Python (0) | 2025.07.17 |
| 코딩 - Java(클래스, 상속과 생성자, 메소드 오버라이딩, final 클래스와 메소드, 추상화, 형변환, 예외처리) (0) | 2025.07.17 |