본문 바로가기

정보처리기사_실기

정보처리기사 163 ~ 175 (운영체제 개념 ~ 인터넷)

 

  • 운영체제 (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에서 외부 명령어에 해당
            • 종류 : 에디터, 컴파일러, 인터프리터 등..
      • LINUX
        • 리누스 토발즈(Linus Torvalds)가 UNIX를 기반으로 개발한 운영체제
        • 프로그램 소스 코드가 무료로 공개
        • UNIX와 완벽하게 호환
      • MacOS
        • Apple 사가 UNIX를 기반으로 개발한 운영체제
        • 아이맥과 맥북 등 애플 사에서 생산하는 제품에서만 사용 가능
        • 드라이버 설치 및 install과 uninstall 과정이 단순함
      • Android
        • 구글 사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영 체제
        • 자바와 코틀린으로 애플리케이션 작성
        • 스마트폰 등 휴대용 장치에서 주로 사용
      • iOS
        • 애플 사에서 개발한 유닉스 기반의 모바일 운영체제
  • 기억장치의 관리 전략
    • 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것 
    • 종류
      • 반입(Fetch) 전략
        • 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
        • 기법
          • 요구 반입 : 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
          • 예상 반입 : 프로그램이나 데이터를 미리 예상하여 적재하는 방법
      • 배치(Placement) 전략
        • 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략
        • 기법
          • 최초 적합(First Fit) : 들어갈 수 있는 빈 영역 중에서 첫번째 분할 영역에 배치
          • 최적 적합(Best Fit) : 들어갈 수 있는 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치
          • 최악 적합(Worst Fit) : 들어갈 수 있는 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
        • 단편화 : 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간을 의미
      • 교체(Replacement) 전략
        • 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략
        • 종류 : FIFO, OPT, LRU, LFU, NUR, SCR
  • 주기억장치 할당
    • 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용
    • 분류
      • 연속 할당 기법
        • 프로그램을 주기억장치에 연속으로 할당하는 기법
        • 종류
          • 단일 분할 할당 기법
            • 한순간에 오직 한명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법
            • 경계 레지스터가 사용된다
              • 경계 레지스터 : 사용자 프로그램이 운영체제 영역에 접근하지 못하도록 보호하는 레지스터, 사용자 영역이 시작되는 주소를 기억
            • 종류
              • 오버레이(Overlay) 기법
                • 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
              • 스와핑(Swapping) 기법
                • 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체
          • 다중 분할 할당 기법
            • 고정 분할 할당 기법
              • 정적 할당 기법
              • 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할
              • 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행
            • 가변 분할 할당 기법
              • 동적 할당 기법
              • 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할
              • 단편화를 줄이기위해 사용
  • 가상 기억장치(Virtual Memory)
    • 보조기억장치의 일부를 주기억장치처럼 사용하는 것
    • 프로그램을 여러 개의 작은 블록 단위로 나누어서 보관해 놓고 사용
    • 기법
      • 페이징(Paging) 기법
        • 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치의 영역에 적재시켜 실행
        • 페이지 : 프로그램을 일정한 크기로 나눈 단위
        • 페이지 프레임 : 페이지 크기로 일정하게 나누어진 주기억장치의 단위
        • 내부 단편화 발생
      • 세그먼테이션(Segmentation) 기법
        • 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행
        • 세그먼트 : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위
        • 외부 단편화 발생
  • 페이지 교체 알고리즘
    • 페이지 부재가 발생하면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법
      • 페이지 부재(Page Fault) : 가상 페이지가 주기억장치에 없는 경우
    • 종류
      • OPT (최적 교체)
        • 앞으로 가장 오랫동안 사용하지 않을 페이즈를 교체하는 기법
        • 페이지 부재 획수가 가장 적게 발생하는 가장 효율적인 알고리즘
      • FIFO
        • 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체
      • LRU
        • 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
      • LFU
        • 사용 빈도가 가장 적은 페이즈를 교체
      • NUR
        • 최근에 사용하지 않은 페이지를 교체
        • 참조 비트와 변형 비트가 사용됨
      • SCR
        • 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법
        • FIFO 기법의 단점 보완
  • 가상 기억장치 기타 관리 사항
    • 페이지 크기
      • 페이지 크기가 작을 경우
        • 단편화 감소
        • 효율적인 워킹셋 유지
        • 매핑 속도 감소
        • 입.출력시간 증가
      • 페이지 크기가 클 경우
        • 단편화 증가
        • 매핑 속도 증가
        • 입.출력의 효율성 증가
    • Locality (국부성, 구역성, 국소성, 지역성)
      • 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
      • 워킹셋 이론의 기반
      • 데닝 교수에 의해 증명
      • 종류
        • 시간 구역성 (Temporal Locality)
          • 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
        • 공간 구역성 (Spatial 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 기법을 보완
      • 우선순위 계산 식
        • (대기시간 + 서비스시간) / 서비스 시간
  • 환경 변수
    • 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임을 의미
    • Windows의 주요 환경 변수
      • set을 입력하면 모든 환경변수와 값을 출력
        • %ALLUSERPROFILE% → 모든 사용자의 프로필이 저장되어있는 폴더
        • %APPDATA% → 필요 데이터가 저장된 폴더
        • %COMSPEC% → 기본 명령 프롬포트로 사용할 프로그램 명
        • %HOMEDRIVE% → 로그인한 계정 정보가 저장된 드라이브
        • %HOMEPATH% → 로그인한 계정의 기본 폴더
        • %LOGONSERVER% → 로그인한 계정이 접속한 서버이름
        • %PATH% → 실행 파일을 찾는 경로
        • %PATHEXT% → cmd에서 실행할 수 있는 파일의 확장자 목록
        • %PROGRAMFILES% → 기본 프로그램의 설치 폴더
        • %SYSTEMDRIVE% → Windows가 부팅된 드라이브
        • %SYSTEMROOT% → 부팅된 운영체제가 들어있는 폴더
        • %TEMP% / %TMP% → 임시 파일이 저장되는 폴더
        • %USERDOMAIN% → 로그인한 시스템의 도메인이름
        • %USERNAME% → 로그인한 계정 이름
        • %USERPROFILE% → 로그인한 유저의 프로필이 저장된 폴더이름
    • UNIX / LINUX 주요 환경 변수
      • set, env, printenv, setenv 중 하나를 입력하면 모든 환경 변수와 값을 표시
        • $DISPLAY → 현재 X윈도 디스플레이 위치
          • X윈도 : GUI 기반의 시스템 소프트웨어
        • $HOME → 사용자의 홈 디렉터리
        • $LANG → 기본적으로 지원되는 언어
        • $MAIL → 메일을 보관하는 경로
        • $PATH → 실행 파일을 찾는 경로
        • $PS1 → 쉘 프롬포트 정보
        • $PWD → 현재 작업하는 디렉터리
        • $TERM → 로긴 터미널 타입
        • $USER → 사용자 이름
  • 운영체제 기본 명령어
    • 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  현재 시스템에 접속해 있는 사용자 표시

 

  • 인터넷 (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역할을 하는 서버