- 운영체제 (OS, Operating System)
- 시스템의 자원들을 효울적으로 관리하며 사용자 컴퓨터를 편리하고 효과적으로 사용할 수 있는 환경을 제공하는 프로그램의 모임
- 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작
- 목적
- 처리능력 (Throughput) : 일정 시간 내에 시스템이 처리하는 일의 양
- 반환시간 (Turn Aroung Time) : 작업 의뢰 시간부터 완료까지 걸린 시간
- 사용 가능도 (Availability) : 사용할 필요가 있을 때 즉시 사용 가능한 정도
- 신뢰도 (Reliability) : 주어진 문제를 정확하게 해결하는 정도
- 기능
- 자원 관리
- 스케줄링 기능 제공
- 편리한 인터페이스 제공
- 하드웨어와 네트워크를 관리 및 제어
- 데이터 및 자원의 공유기능 제공
- 종류
- Windows
- 마이크로소프트 사가 개발한 운영체제
- 특징
- GUI
- 선점형 멀티 태스킹
- 프로그램 실행 중 문제가 발생하면 강제 종료하고 모든 시스템 자원을 반환
- PnP (Plug and Play)
- 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성
- OLE (Object Linking and Embedding)
- 작성된 문자나 그림 등의 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입하여 편질할 수 있는 기능
- 255자의 긴 파일 명
- Single-User 시스템
- UNIX
- 1960년대 AT&T벨 연구소, MIT, General Electric이 공동 개발한 운영체제
- 시분할 시스템을 위해 설계된 대화식 운영체제
- 구성
- 커널 (Kernel)
- 프로그램과 하드웨어 간의 인터페이스 역할
- UNIX의 가장 핵심적인 부분
- 프로세스 관리, 기억장치 관리, 파일 관리 등 여러 기능 수행
- 쉘 (Shell)
- 명령어를 인식하여 프로그램을 호출하고 명령을 수행
- 명령어 해석기
- 시스템과 사용자 간의 인터페이스 담당
- 종류 : Bourne Shell, C Shell, Korn Shell
- 유틸리티 프로그램
- 일반 사용자가 작성한 응용 프로그램을 처리
- DOS에서 외부 명령어에 해당
- 종류 : 에디터, 컴파일러, 인터프리터 등..
- 커널 (Kernel)
- LINUX
- 리누스 토발즈(Linus Torvalds)가 UNIX를 기반으로 개발한 운영체제
- 프로그램 소스 코드가 무료로 공개
- UNIX와 완벽하게 호환
- MacOS
- Apple 사가 UNIX를 기반으로 개발한 운영체제
- 아이맥과 맥북 등 애플 사에서 생산하는 제품에서만 사용 가능
- 드라이버 설치 및 install과 uninstall 과정이 단순함
- Android
- 구글 사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영 체제
- 자바와 코틀린으로 애플리케이션 작성
- 스마트폰 등 휴대용 장치에서 주로 사용
- iOS
- 애플 사에서 개발한 유닉스 기반의 모바일 운영체제
- Windows
- 기억장치의 관리 전략
- 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것
- 종류
- 반입(Fetch) 전략
- 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
- 기법
- 요구 반입 : 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
- 예상 반입 : 프로그램이나 데이터를 미리 예상하여 적재하는 방법
- 배치(Placement) 전략
- 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략
- 기법
- 최초 적합(First Fit) : 들어갈 수 있는 빈 영역 중에서 첫번째 분할 영역에 배치
- 최적 적합(Best Fit) : 들어갈 수 있는 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치
- 최악 적합(Worst Fit) : 들어갈 수 있는 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
- 단편화 : 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간을 의미
- 교체(Replacement) 전략
- 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략
- 종류 : FIFO, OPT, LRU, LFU, NUR, SCR
- 반입(Fetch) 전략
- 주기억장치 할당
- 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용
- 분류
- 연속 할당 기법
- 프로그램을 주기억장치에 연속으로 할당하는 기법
- 종류
- 단일 분할 할당 기법
- 한순간에 오직 한명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법
- 경계 레지스터가 사용된다
- 경계 레지스터 : 사용자 프로그램이 운영체제 영역에 접근하지 못하도록 보호하는 레지스터, 사용자 영역이 시작되는 주소를 기억
- 종류
- 오버레이(Overlay) 기법
- 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
- 스와핑(Swapping) 기법
- 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체
- 오버레이(Overlay) 기법
- 다중 분할 할당 기법
- 고정 분할 할당 기법
- 정적 할당 기법
- 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할
- 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행
- 가변 분할 할당 기법
- 동적 할당 기법
- 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할
- 단편화를 줄이기위해 사용
- 고정 분할 할당 기법
- 단일 분할 할당 기법
- 연속 할당 기법
- 가상 기억장치(Virtual Memory)
- 보조기억장치의 일부를 주기억장치처럼 사용하는 것
- 프로그램을 여러 개의 작은 블록 단위로 나누어서 보관해 놓고 사용
- 기법
- 페이징(Paging) 기법
- 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치의 영역에 적재시켜 실행
- 페이지 : 프로그램을 일정한 크기로 나눈 단위
- 페이지 프레임 : 페이지 크기로 일정하게 나누어진 주기억장치의 단위
- 내부 단편화 발생
- 세그먼테이션(Segmentation) 기법
- 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행
- 세그먼트 : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위
- 외부 단편화 발생
- 페이징(Paging) 기법
- 페이지 교체 알고리즘
- 페이지 부재가 발생하면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법
- 페이지 부재(Page Fault) : 가상 페이지가 주기억장치에 없는 경우
- 종류
- OPT (최적 교체)
- 앞으로 가장 오랫동안 사용하지 않을 페이즈를 교체하는 기법
- 페이지 부재 획수가 가장 적게 발생하는 가장 효율적인 알고리즘
- FIFO
- 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체
- LRU
- 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
- LFU
- 사용 빈도가 가장 적은 페이즈를 교체
- NUR
- 최근에 사용하지 않은 페이지를 교체
- 참조 비트와 변형 비트가 사용됨
- SCR
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법
- FIFO 기법의 단점 보완
- OPT (최적 교체)
- 페이지 부재가 발생하면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법
- 가상 기억장치 기타 관리 사항
- 페이지 크기
- 페이지 크기가 작을 경우
- 단편화 감소
- 효율적인 워킹셋 유지
- 매핑 속도 감소
- 입.출력시간 증가
- 페이지 크기가 클 경우
- 단편화 증가
- 매핑 속도 증가
- 입.출력의 효율성 증가
- 페이지 크기가 작을 경우
- Locality (국부성, 구역성, 국소성, 지역성)
- 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
- 워킹셋 이론의 기반
- 데닝 교수에 의해 증명
- 종류
- 시간 구역성 (Temporal Locality)
- 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
- 공간 구역성 (Spatial Locality)
- 일정 위치의 페이지를 집중적으로 액세스하는 현상
- 시간 구역성 (Temporal Locality)
- 워킹 셋 (Working Set)
- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
- 데닝이 제안
- 프로그램의 Locality 특성을 이용
- 스래싱 (Thrashing) 현상
- 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
- 페이지 부재가 자주 발생하면서 나타나는 현상
- 페이지 크기
- 프로세스 (Process)
- 실행중인 프로그램을 의미
- 예시
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로시저가 활동중인 것
- 비동기적 행위를 일으키는 주체
- 비동기적 행위 : 다수의 프로세스가 서로 규칙적이거나 연속적이지 않고 독립적으로 실행되는 것
- PCB (프로세스 제어 블록)
- 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
- 저장되어 있는 정보
- 프로세스의 현재 상태
- 포인터
- 프로세스 고유 식별자
- 우선순위
- 프로세스 상태 전이
- 상태
- 제출(Submit) : 사용자가 작업을 시스템에 제출한 상태
- 접수(Hold) : 디스크의 할당 위치에 저장된 상태
- 준비(Ready) : 프로세서를 할당받기 위해 기다리고 있는 상태
- 실행(Run) : 프로세서를 할당받아 실행되는 상태
- 대기(Wait, Block) : 입.출력 처리가 완료될 때 까지 대기하고 있는 상태
- 종료(Terminated, Exit) : 프로세스 할당이 해제된 상태
- 상태 전이 관련 용어
- Dispatch : 프로세스가 프로세서를 할당받아 준비상태에서 실행상태로 전이되는 과정
- Spooling : 데이터를 한꺼번에 입.출력하기 위해 디스크에 저장하는 과정
- Wake Up : 프로세스가 대기상태에서 준비상태로 전이되는 과정
- 교통량 제어기(Traffic Controller) : 프로세의 상태에 대한 조사와 통보 담당
- 스레드 (Thread)
- 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위 또는 프로세스 내에서의 작업 단위
- 하나의 스레드 = 단일 스레드, 하나 이상의 스레드 = 다중 스레드
- 프로세스의 일부 특성을 갖고있기에 경량 프로세스라고도 함
- 스케줄링 (Scheduling)
- 시스템의 여러 자원을 해당 프로레스에게 할당하는 작업
- 종류
- 장기 스케줄링 : 시스템의 자원을 차지할 수 있도록 할 것인가를 결정
- 중기 스케줄링 : CPU를 할당받을 것인지를 결정
- 단기 스케줄링 : CPU를 할당받는 시기와 특정 프로세스를 지정
- 목적
- 공정성
- 처리율 증가
- CPU 이용률 증가
- 우선순위 제도
- 오버헤드 최소화
- 등등..
- 비선점 (Non- Preemptive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 뺴앗아 사용할 수 없는 스케줄링 기법
- 프로세스 응답시간의 예측이 용이
- 일괄처리 방식에 적합
- 종류 : FCFS, SJF, HRN, 우선순위, 기한부 등..
- 선점 (Preemptive) 스케줄링
- 우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
- 우선순위가 높은 프로세스를 빠르게 처리할 수 있음
- 많은 오버레드 초래
- 종류 : Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐
- 주요 스케줄링 알고리즘
- FCFS (First Come First Service, 선입선출)
- 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
- SJF (Shortest Job First, 단기 작업 우선)
- 준비상태 큐에서 기다리고 있는 프로세스들 중 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당
- HRN (Highest Response-ratio Next)
- 대기 시간과 서비스 시간을 이용하는 기법
- SJF 기법을 보완
- 우선순위 계산 식
- (대기시간 + 서비스시간) / 서비스 시간
- FCFS (First Come First Service, 선입선출)
- 환경 변수
- 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임을 의미
- Windows의 주요 환경 변수
- set을 입력하면 모든 환경변수와 값을 출력
- %ALLUSERPROFILE% → 모든 사용자의 프로필이 저장되어있는 폴더
- %APPDATA% → 필요 데이터가 저장된 폴더
- %COMSPEC% → 기본 명령 프롬포트로 사용할 프로그램 명
- %HOMEDRIVE% → 로그인한 계정 정보가 저장된 드라이브
- %HOMEPATH% → 로그인한 계정의 기본 폴더
- %LOGONSERVER% → 로그인한 계정이 접속한 서버이름
- %PATH% → 실행 파일을 찾는 경로
- %PATHEXT% → cmd에서 실행할 수 있는 파일의 확장자 목록
- %PROGRAMFILES% → 기본 프로그램의 설치 폴더
- %SYSTEMDRIVE% → Windows가 부팅된 드라이브
- %SYSTEMROOT% → 부팅된 운영체제가 들어있는 폴더
- %TEMP% / %TMP% → 임시 파일이 저장되는 폴더
- %USERDOMAIN% → 로그인한 시스템의 도메인이름
- %USERNAME% → 로그인한 계정 이름
- %USERPROFILE% → 로그인한 유저의 프로필이 저장된 폴더이름
- set을 입력하면 모든 환경변수와 값을 출력
- UNIX / LINUX 주요 환경 변수
- set, env, printenv, setenv 중 하나를 입력하면 모든 환경 변수와 값을 표시
- $DISPLAY → 현재 X윈도 디스플레이 위치
- X윈도 : GUI 기반의 시스템 소프트웨어
- $HOME → 사용자의 홈 디렉터리
- $LANG → 기본적으로 지원되는 언어
- $MAIL → 메일을 보관하는 경로
- $PATH → 실행 파일을 찾는 경로
- $PS1 → 쉘 프롬포트 정보
- $PWD → 현재 작업하는 디렉터리
- $TERM → 로긴 터미널 타입
- $USER → 사용자 이름
- $DISPLAY → 현재 X윈도 디스플레이 위치
- set, env, printenv, setenv 중 하나를 입력하면 모든 환경 변수와 값을 표시
- 운영체제 기본 명령어
- Windows
- DIR → 현재 디렉터리의 파일 표시
- COPY → 파일 복사
- DEL → 파일 삭제
- TYPE → 파일 내용 표시
- REN → 파일 이름 변경
- MD → 디렉터리 생성
- CD → 디렉터리 위치 변경
- CLS → 화면의 내용 지움
- ATTRIB → 파일의 속성 변경
- FIND → 파일에서 문자열 찾음
- CHKDSK → 디스크 상태 점검
- FORMAT → 디스크 표면을 트랙과 섹터로 나누어 초기화
- MOVE → 파일 이동
- UNIX / LINUX
- cat → 파일 내용을 화면에 표시
- cd → 디렉터리 위치 변경
- chmod → 파일에 대한 사용 허가 지정
- chown → 파일의 소유자와 그룹 변경
- cp → 파일 복사
- rm → 파일 삭제
- find → 파일 찾기
- fsck → 파일 시스템을 검사 및 보수
- kill → PID를 이용하여 프로세스 종료
- fork → 프로세스 생성
- killall → 프로세스의 이름을 이용하여 프로세스 종료
- ls → 현재 디렉터리의 파일 목록 표시
- mkdir → 디렉터리 생성
- rmdir → 디렉터리 삭제
- mv → 파일 이동
- ps → 현재 실행중인 프로세스 표시
- pwd → 현재 작업중인 디렉터리 경로 표시
- top → 시스템의 프로세스와 메모리 사용 현황 표시
- who → 현재 시스템에 접속해 있는 사용자 표시
- Windows
- 인터넷 (Internet)
- TCP/IP 프로토콜을 기반으로 하여 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망
- IP 주소 (Internet Protocol Address), IPv4
- 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소
- 8비트씩 4부분, 총 32비트
- 구성
- A Class : 국가나 대형 통신망 (0~127)
- B Class : 중대형 통신망 (128~191)
- C Class : 소규모 통신망 (192~223)
- D Class : 멀티캐스트 용으로 사용 (224~239)
- E Class : 실험적 주소
- 서브네팅 (Subnetting)
- 할당된 네트워크 주소를 다시 여러개의 작은 네트워크로 나누어 사용하는 것
- 서브넷 마스크 : 네트워크 주소와 호스트 주소를 구분하기 위한 비트
- IPv6
- IPv4의 주솟 부족 문제를 해결
- 16비트씩 8부분, 총 128비트
- 기본 헤더 뒤에 확장 헤더를 더함
- 헤더(Header) : IP주소의 버전, 인증 정보 등의 다양한 정보를 표시
- 패킷 크기에 제한이 없음
- 보안 문제 해결 가능 (인증성, 기밀성, 무결성 지원)
- 구성
- 유니캐스트(Unicast) : 단일 송신자와 단일 수신자 간의 통신 (1:1 통신)
- 멀티캐스트(Multicast) : 단일 송신자와 다중 수신자 간의 통신 (1:다 통신)
- 애니캐스트(Anycast) : 단일 송신자와 가장 가까이 있는 단일 수신자 간의 통신 (1:1 통신)
- 도메인 네임
- 숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것
- DNS : 문자로 된 도메인 네임을 컴퓨터가 이해할 수 있는 IP주소로 변환하는 역할을 하는 시스템
- DNS 서버 : DNS역할을 하는 서버
'정보처리기사_실기' 카테고리의 다른 글
정보처리기사 192 ~ 200 (소프트웨어 패키징 ~ 빌드 자동화 도구) (0) | 2022.07.05 |
---|---|
정보처리기사 176 ~ 191 (OSI 참조모델 ~ 데이터 표준화) (1) | 2022.07.05 |
정보처리기사 156 ~ 162 (Python 활용 ~ 예외 처리) (0) | 2022.07.02 |
정보처리기사 149 ~ 155 (데이터 입.출력 ~ JAVA 활용) (0) | 2022.06.30 |
정보처리기사 133 ~ 148 (Secure SDLC ~ 취약점 분석.평가) (0) | 2022.06.29 |