정보처리기능사 실기 Part 3 - Chapter 1. 운영체제

HongInSung·2022년 7월 24일
2
post-thumbnail

이 글은 이기적 정보처리기능사 실기 기본서를 기반으로 제작되었습니다.

소개

오늘은 새로운 Part! 응용 SW 기초 기술 활용 중 운영체제에 대해서 알아보도록 합시다!
흔히 말하는 리눅스나 윈도우같은 개념들이 들어오니 꼭 봐두시는걸 추천드립니다!

1. 운영체제 기초 활용

1. 운영체제

1) 운영체제의 특징

  • 운영체제는 사용자로 하여금 컴퓨터의 하드웨어를 보다 쉽게 사용할 수 있도록 인터페이스를 제공하는 소프트웨어이다.
  • 하드웨어는 컴퓨터의 장치를 제어, 데이터를 처리하는 중앙처리장치, 데이터를 저장하는 기억장치, 외부와의 통신을 담당하는 통신장치 그리고 데이터 입/출력을 담당하는 입출력장치 등으로 구분된다.
  • 운영자는 사용자 편의성을 위한 인터페이스인 동시에 다양한 자원을 지원하는 자원 관리자이다.
  • 운영체제의 제어 범위

2) 운영체제의 목적

  • 운영체제의 목적, 성능 평가 항목이기도 하다.
    • 처리 능력 ( Throughput )
      • 일정한 단위 시간 내에 처리할 수 있는 일의 양
    • 반환 시간 ( Turn Around Time )
      • 하나의 작업을 시작한 시간에서부터 결과를 얻을 때까지 걸린 시간
    • 사용 가능도 ( Availability )
      • 시스템을 이용하려 할 때 얼마나 빨리 사용할 수 있는지의 정도
    • 신뢰도 ( Reliability )
      • 시스템이 주어진 문제를 정확하게 해결할 수 있는지의 정도

3) 운영체제 발달 과정

  • 일괄 처리 시스템
    • 데이터를 모아두었다가 묶어서 처리하는 시스템.
  • 다중 프로그래밍 시스템
    • 여러 프로그램을 메모리에 나눠 적재한 후 번갈아 할당
    • 여러 프로그램을 동시에 실행할 수 있음.
  • 시분할 처리 시스템
    • 다중 프로그래밍 시스템에 프로세서 스케줄링이라는 개념을 더한 시스템이다.
    • 여러 사용자에게 짧은 간격으로 프로세서를 번갈아 가며 할당한다.
    • 마치 혼자 독점하는 것처럼 사용할 수 있다.
  • 실시간 처리 시스템
    • 데이터가 발생하는 즉시 응답하는 시스템이다.
  • 분산 처리 시스템
    • 독립적인 처리 능력을 가진 컴퓨터 시스템을 통신망으로 연결하여 네트워크 상에서 서로 통신하며 협력하여 처리하는 시스템이다.
  • 병렬 처리 시스템
    • 하나 이상의 연산을 동시에 수행하여 연산 속도를 증가시키는 시스템이다.

2000년대 이후에는 모바일 및 임베디드, 가상화 및 클라우드 컴퓨팅으로 발전하였다.

  • 임베디드
    • 기계나 기타 제어가 필요한 시스템에 대해 특정 기능을 수행하는 시스템이다.
    • 내장형 시스템이므로, 장치 내에 존재한다.
  • 가상화
    • 물리적 하드웨어 등을 사용자로부터 은폐하여, 대체품으로 논리적인 리소스를 제공한다.
    • 또는, 하나의 물리적인 리소스를 여러 개로 보이게 하는 기술이다.
      • 호스트 OS형
        • 물리적 하드웨어 위에 OS를 설치하여 가상화 소프트웨어와 가상 머신을 이용하는 방식.
        • Ex) VMware, VirtualBox
      • 하이퍼바이저형
        • 호스트OS를 필요로 하지 않는다.
        • 직접 물리 하드웨어를 움직여 독립한 호스트와 같이 행동하는 방식.
        • Ex) 가상화를 위한 독립적 OS를 직접 설치
      • 컨테이너형
        • 컨테이너라는 가상화 소프트웨어를 이용하여 사용하는 방식.

2. 운영체제 계열별 특징

운영체제 계열별 특징은 문제가 거의 나오지 않기 때문에 간단하게 흝어보고 넘어가보자.

1) Windows

  • Microsoft사에서 만든 OS이다.
  • 현재 가장 많이 사용되고 있는 OS기도 하다.
  • 1995년도에 Windows 95를 낸후, Xp, 7, 8, 8,1, 10버전을 내고 있고, 최근엔 11버전도 나온 상태이다.
  • 사용자가 컨트롤하는 마우스의 아이콘을 이용하여 SW를 실행시키는 편리한 인터페이스를 지원한다.
  • Microsoft만이 수정 및 배포할 수 있으며 고객 지원이 체계적이라는 장점을 가지고 있다.
  • 하지만 반대로 문제점이 발견되었을 시 수정에 시간이 걸린다는 단점이 있다.
  • 위 단점을 악용한 악성 해커들로 인해 유닉스 계열의 운영체제에 비해 보안에 취약하다는 문제점이 계속 나오고 있다.

Windows의 특징 및 용어

2) UNIX

  • 유닉스는 1960년대 AT&T Bell 연수소, MIT 그리고 General Electric이 공동 연구로 개발한 OS이다.
  • 멀티태스크 기능에 초점을 맞췄으며 초기 운영체제 Multics를 만들었다.
  • C언어로 재이식되어 대중화의 기반을 마련하였고, 1970년대 AT&T가 본격적으로 유닉스를 판매했다.
  • 이후 많은 변화를 거쳐 SYSTEM V 계열과 BSD 계열로 발전해 왔다.
  • 현재는 이 둘의 장점을 통합한 버전의 유닉스가 배포되고 있다.
  • IBM의 사용 운영체제인 AIX, 오라클에 솔라리스(Solaris), HP의 UX가 그 예이다.

    BSD : Berkely Software Distribution

유닉스의 구성

유닉스의 특징 및 용어

3) 리눅스 계열

  • 유닉스의 호환 커널이다.
  • 1991년 리누스 토발즈는 '자유 소프트웨어' 정책 하에서 완전히 자유롭고 재배포가 가능한 운영체제인 유닉스를 만들었다.

    자유 소프트웨어란, 금전적 무료가 아닌 원하는 대로의 실행, 무료나 유로로 복제물 재배포, 필요에 따른 개작 등 포괄적인 '자유'를 부여하는 것을 의미한다.

  • 리눅스는 수천 명 이상의 개발자들이 코드를 보고 업데이트를 하고 있다.
  • 그래서 버그 발생 시 다수의 개발자가 수정에 참여하여 빠른 업데이트가 가능하다.
  • 하지만, Windows와 같은 체계적인 지원이 상대적으로 부족해서 일반인 보다는 전문가들이 많이 사용하고 있다.
  • 리눅스는 현재 데비안, 레드헷, Fedora, Ubuntu, CentOS와 같이 다양한 버전으로 다양한 회사에서 출시 되고 있다.
  • 그래서 배초 정책, 주기, 사상 등이 각자 다르다는 특징이 있다.
  • 유닉스는 현재 서버 시장과 슈퍼 컴퓨터 시장에서 매우 높은 점유율을 가지고 있다.

유닉스와 리눅스의 차이점

분류리눅스유닉스
비용대부분 무료, 지원 정책에 따라 일부 유료 서비스 제품도 있음대부분 유료
주 사용자개발자, 일반 사용자메인 프레임, 워크스테이션 등 대형 시스템 관리자
개발사커뮤니티IBM, HP등
개발 배포오픈소스 개발대부분 사업자에 의해 배포
사용량모바일폰, 태블릿 등 다양하게 사용인터넷 서버, 워크스테이션 등 대형 서비스에 주로 사용
사용자 편의GUI 제공, 파일 시스템 지원, BASH Shell 사용커맨드 기반이 주, GUI도 제공함, 다른 Shell과 호환 가능

4) 메킨토시 운영체제(OS X)

  • 유닉스 기반으로 만들어져 애플사의 제품군에서만 사용이 가능한 GUI기반 OS이다.
  • 애플사는 OS라는 운영체제를 오랜 기간 유지하여 왔으나, 1999년 OS X로 업데이트를 하였다.
  • 이후에는 클라이언트 버전, 서버 제품 등으로 제품군을 확대해왔다.
  • 2017년에는 OS X 시에라, 2018년에는 모라비 등을 지속적으로 발표하고 있다.
  • 최근에는 OS X 몬터레이가 발표됬다.

2. 운영체제 기본 명령어 활용

1. 운영체제 기본 명령어

  • 운영체제를 제어하기 위한 방법은 CLIGUI가 있다.
  • CLI(Command Line Interface)
    • 사용자가 직접 명령어를 입력하여 컴퓨터에게 명령을 전달하는 방식
    • Ex) Windows - Cmd, Powershell, Linux - BASH Shell
  • GUI(Graphic User Interface)
    • 마우스로 화면을 클릭하여 컴퓨터를 제어하는 방식
    • 지금 보고 있는 이 화면이 GUI 방식인것이다.
  • 초기 운영체제들은 CLI 기반의 운영체제를 많이 사용하였다.
    • 대표격은 MS-DOS가 있다.
  • 하지만, 마우스기반의 제어 시스템인 GUI가 개발되며 CLI의 사용 빈도가 줄어들었다.
  • 현재는 오픈소스 기반에 개발 환경이 급격히 늘어나며, Github등의 사용이 증가하였다.
  • 그래서 CLI의 기본 개념과 명령어들의 중요성이 다시 높아지고 있다.
  • 깃허브는 애플리케이션 결함 조치부분에서 설명했으니 넘어가겠다.

2. CLI 기본 명령어

1) Windows

  • CLI 명령어를 Windows에서 사용하기 위해선 Command 창이 필요하다.
  • (실습) 프로그램 및 파일 검색에서 cmd를 입력하여 실행시켜보자.

2) Linux/Unix 계열

  • 리눅스와 유닉스 명령어는 쉘에서 입력할 수 있다.
  • 쉘이란? 컴퓨터 내부를 관리하는 커널과 사용자간을 연결하는 창이다.
  • 쉘의 주요 기능은 다음과 같다.
    • 세션별 변수를 설정, 운영체제를 사용자가 원하는 상태로 설정하도록 지원
    • 사용자 요청에 기반한 명령열 작성
    • 백그라운드 처리, 서브 쉘 설정
    • 일연의 명령어를 묶어 처리하는 스크립트 기능 지원

3) 리눅스 디렉터리 구조

  • 리눅스 디렉터리란? 윈도우의 폴더와 같은 개념이다.
  • 기본적으로 윈도우에서는 (역슬래쉬)를 사용하고, 리눅스에서는 /(슬래쉬)를 사용한다.
  • 최상위 디렉터리는 /이며, root는 최상위 디렉터리 아래의 root 계정의 홈 디렉터리임을 의미한다.

4) CLI 대표 명령어

기능윈도우/MS-DOS리눅스
경로 변경cdcd
목록 출력dirls
파일 복사copycp
구조 복사xcopycp
디렉터리 생성mkdirmkdir
하위 파일 삭제delrm
권한 설정attribchmod
화면 표시typecat
목적지까지 경로tracerttraceroute
프로세스 종료taskkillkill
실행 중 프로세스 표시tasklistps
디렉터리 경로 표시cd ,pwd
네트워크 상태 점검ipconfigping
접속해 있는 사용자 표시whoamiwho

윈도우즈 CLI 명령어 실습

3. GUI 기본 명령어

  • 윈도우 내에서 파일을 이동하고 프로그램을 실행하는 모든 행위가 GUI 명령에 해당된다.
  • 메모리, 디스크 제어 등리 필요한 경우에는 제어판에서 필요 기능을 선택하여 명령을 내릴 수 있다.
  • 리눅스의 GUI는 Windows와 같이 기본 설정이 아닌 경우가 많다.
  • 그래서 버전별로 별도의 설치 방법에 따라서 GUI 환경을 설치해야 한다.
  • 설치 뒤에는 GUI 환경과 CLI 환경을 이동하는 명령어를 사용하여 두 환경을 이동할 수 있다.

3. 운영체제 핵심 기능 파악

1. 운영체제 핵심 기능

  • 운영체제는 CPU, 메모리, 스토리지, 주변 기기 등을 적절히 관리한다.
  • 특히 주기억장치와 메모리, 메모리와 스토리지 사이의 속도차로 인해 여러가지 관리 기법들이 개발되었다.
  • 초기에는 메모리 용량에 제한이 많아 소프트웨어 개발 시 메모리 관리가 매우 중요했었다.
  • 최근에 들어서는 운영체제에서 대부분 자동으로 관리해주므로 사용이 편리해졌다.
  • 또한 개발 및 시스템 환경이 클라우드화 되면서 자원 관리에 필요한 노력이 많이 줄었다.

1) 메모리 관리

  • 메모리 안에는 다수의 프로그램들이 실행된다
  • 프로그램 실행 중 메모리가 꽉 차게 되면 시스템의 속도가 느려지고, 때로는 시스템이 멈춘다.
  • 따라서, 프로그램의 실행이 종료될 때까지 메모리를 가용한 상태로 유지, 관리하는 것을
    메모리 관리라고 한다.
  • 메모리에 있는 프로그램은 중앙처리장치(CPU)로 이동하여 처리된다.

2) 프로세스 관리

  • 프로그램은 파일 형태로 저장되어 관리되다가 실행을 시키면 동작을 하게 된다.
  • 이때 실행 중인 프로그램을 프로세스(Process)라고 한다.
  • 작업(Job) 또는 테스크(Task)라고도 한다.
  • 프로세스 관리 기법에는 일시정지/재실행, 동기화, 통신, 교착상태 정리, 프로세스 생성/삭제 등이 있다.
  • 윈도우에서는 작업 관리자의 프로세스 탭에서 다양한 프로세스를 조회할 수 있다
    • 정상 동작하지 않을 때 프로그램 끝내기를 통해 프로세스를 중단시킬 수도 있다.

1) 프로세스 상태

2) 프로세스 상태 전이

  • 디스패치 ( Dispatch Process )
    • 준비(Ready) -> 실행(Running)
    • 준비 상태에서 실행 상태로 바뀌는 것
  • 보류 ( Blocked )
    • 실행(Running) -> 보류(Blocked)
    • 프로세스 실행 중 시간이 다 되기도 전에 입출력 동작을 해야 할 경우 프로세스가 CPU를 반납하고 보류 상태로 들어가는 것
  • 기상 ( Wake Up )
    • 보류(Blocked) -> 준비(Ready)
    • 보류 상태 이후 다시 준비 상태로 넘어가는 것
  • 시간제한 ( Timeout Process )
    • 실행(Running) -> 준비(Ready)
    • 클락 인터럽트를 통해 프로세스가 일정 시간만 점유할 수 있게 하는것

3) 프로세스 스케줄링

  • 프로세스를 효율적으로 실행될 수 있도록 여러 자원들 사이의 우선 순위를 관리하는 작업이다.
  • 두가지 종류가 있다.
    • 선점형
      • 이미 할당되어 실행 중인 프로세스라도 강제로 빼앗아 선택하여 사용할 수 있다.
    • 비선점형
      • 이미 실행 중인 프로세스를 강제로 빼앗아 사용할 수 없다.

2. 가상화 및 클라우드

1) 가상화

1) 가상화의 개념

  • 가상화는 물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 반대로 하나의 물리적인 리소스를 여러 개로 보이게 하는 것을 의미한다.
  • 대부분의 서버는 용량의 20% 정도만을 사용하는데, 가상화는 서버의 가동률을 60% ~ 70% 이상으로 올릴 수 있다.

2) 가상화의 종류

  • 플렛폼 가상화
    • 하드웨어 플렛폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 마치
      독립된 환경을 만들어 낸 것처럼 보여준다.
  • 리소스 가상화
    • 메모리, 저장 장치, 네트워크등을 결합하거나 나누는 것이다.
    • 사용자는 가상화 된 물리적 장치들이 어떤 위치에 있는지 모르는 경우가 많다.

2) 클라우드

1) 클라우드의 개념

  • 인터넷 기반에서 구동되는 컴퓨팅 기술을 의미한다.
  • GCP, AWS가 클라우드에 대표적인 예이다.
  • 클라우드 컴퓨팅을 이용하면 응용 프로그램을 필요에 따라 불러 사용하고, 데이터를 손쉽게 저장 및 추출할 수 있다.
  • 태블릿, 휴대폰 등 사용 디바이스가 다양해지면서 클라우드 컴퓨팅은 중요도가 높아지고 있다.

2) 클라우드 서비스의 종류

  • IaaS(Infrastructure as a Service)(인프라형)
    • 사용자가 관리할 수 있는 범위가 가장 넓은 클라우드 서비스다.
    • 웹 상에서 Google, Microsoft, Amazon 등에서 제공하는 환경의 네트워크, 보안, 데이터 저장소, 콘텐츠 딜리버리 서비스를 포함한 다양한 인프라를 임대하여 이용할 수 있는 서비스이다.
    • 대표적인 인프라형 클라우드로는 AWS의 E2, 구글의 컴퓨트 엔진, Microsoft의 Azure이다.
  • PaaS( Platform as a Service)(플랫폼형)
    • 운영체제가 이미 구성되어 있는 상태에서 사용자는 데이터와 애플리케이션만 직접 관리할 수 있는 서비스이다.
    • 미리 구축된 플랫폼을 이용하여 관리상의 자유도가 낮다.
    • 개발 자체에 집중할 수 있다는 장점이 있다.
    • 대표적인 플랫폼형 클라우드로는 Heroku, 구글에 App Engine이 있다.
  • SaaS(Software as a Service)(서비스형)
    • 인프라와 운영체제뿐만 아니라 사용할 수 있는 소프트웨어까지 갖추어져있다.
    • 웹상의 로그인만으로 다양한 소프트웨어를 사용한 만큼 비용을 지불해가며 사용할 수 있는 서비스이다.
    • 대표적인 서비스형 클라우드로는 Slack, 구글의 G Suite이 있다.

마치며

운영체제에서 나오는 문제는 많지는 않지만.. 혹시 모르니 외워가시는걸 추천드립니다.
물론 모든것을 외워가실순 없겠지만 최소한 윈도우에서 사용하는 단축키 정도는 외워가셔요..
다음 시간엔 머리 터지는 부분! 네트워크에 대해 다뤄보도록 하겠습니다!
그럼 다음 시간에 다시 뵙도록 하죠!

profile
안녕하세요! 풀스택 노려보고 있는 홍인성입니다!

0개의 댓글