[컴정개론] 소프트웨어

2023. 3. 30. 10:532023/컴퓨터및정보보호개론

서울여자대학교 정보보호학과 김성욱 교수님의 컴퓨터및정보보호개론 수업을 듣고 작성한 요약본입니다.

교재: 컴퓨터의 이해 (3판), 김명주 외


소프트웨어

  • 하드웨어로 어떤 작업을 하기 위해 필요한 프로그램(코드)
  • 앨런튜링이 최초로 사용한 용어임
  • 시스템 소프트웨어
    • 종류
      • 운영체제
        • 컴퓨터의 주기억장치 내에 상주
        • 중앙처리장치, 주기억장치, 보조기억장치, 입출력장치, 네트워크 등의 컴퓨터 시스템 resource들을 효율적으로 제어하고 관리
        • 사용자로부터 명령을 받아들이고 이를 해석하여 CPU에 전달할 수 있는 인터페이스를 제공하는 SW
      • 링커
        • 하나의 결과를 출력하기 위해 작성된 서로 다른 작은 프로그램들을 연결하여 실행 가능한 하나의 프로그램으로 만들어주는 프로그램
      • 로더
        • 하드디스크와 같은 보조기억장치에 저장되어있는 특정 프로그램을 중앙처리장치가 실행할 수 있도록 주기억장치에 적재하는 과정을 담당함
      • 장치드라이버
        • 컴퓨터 시스템에 부착된 장치를 제어하기 위한 프로그램
      • 시스템 유틸리티
        • 컴퓨터 시스템 동작을 도와주는 작은 규모의 프로그램 지칭
      • 언어처리 프로그램(컴파일러, 어셈블러, 인터프리터 등)
        • 프로그래밍 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있는 기계어로 변
      • 펌웨어로서의 시스템 소프트웨어
        • 하드웨어화 된 소프트웨어
        • 부트 로더와 BIOS의 결합
        • 비휘발성인 ROM 등에 저장하여 빠른 처리 및 회로 단순화 추구
        • 운영체제가 원하는 하드웨어 제어 작업을 부팅 시 직접 담당
      • 디스크 부팅 영역에 존재하는 시스템 소프트웨어
        • MBR(Master Boot Recorder) 방식을 이용하면 2테라까지 가능
        • GPT(GUID(Globally Unique ID) Partition Table)을 이용하면 8제타바이트까지 가능
    • 기능
      • 컴퓨터 시스템의 개별 하드웨어 요소들을 직접 제어, 통합, 관리함
      • 사용자가 하드웨어를 효율적이며 편리하게 이용할 수 있도록 함화면에 보이는 파일 내용을 모니터 혹은 특정 프린터로 출력C언어로 작성된 프로그램을 기계어로 번역
      • 디스크 조각 모음 → 디스크의 유휴 공간 조각들을 모아서 정리
      • e.g. 메모리에 있는 데이터를 SSD로 이동하여 저장
  • 응용소프트웨어
    • 사용자가 원하는 기능을 수행하기 위해 컴퓨터의 성능을 소비하는 것을 의미함
    • 워드프로세서, 스프레드시트, 미디어플레이어, 메신저, 웹브라우저 등
    • application suite
      • 하나의 패키지로 묶인 다수의 응용소프트웨어
      • e.g. MS 오피스, 한컴 오피스, 이스트소프트 알툴즈 등
  • 운영체제
    • 컴퓨터 하드웨어의 자원들을 효율적으로 관리하고 제어함
      • 관리 기술
        • 시스템 효율성
        • 병목현상, 교착현상 최소화
    • 사용자와 컴퓨터 사이에서 쉽고 정확하게 소통해줌
      • 특징
        • 시스템 편이
        • 다중사용자 지원에 따른 보안(한 pc에 여러개의 guest가 존재하는 경우
    • 운영체제의 관리 대상 자원
      • process : CPU가 수행중인 프로그램
      • 주기억장치 : 메모리 할당, 가상메모리
      • 보조기억장치 : file system 관리, garbage 수집
      • 입출력장치
    • 운영체제의 기능
      • 컴퓨터 booting
      • User Interface 제공
        • 의미
          • 사람들과 상호작용을 하도록 설계된 모든 정보 관련 고안품 > 사용자에게 보이는 디스플레이 화면
        • 사용자와 컴퓨터가 상호작용하기 위해 최적의 사용자 환경을 제공
        • 사용자 환경을 통하여 받아들인 명령을 해석하여 CPU에게 전달
        • 사용자의 편의성을 위해 사용자 인터페이스는 꾸준히 개선
        • 운영체제의 UI
          • CLI(Character Line Interface, 문자기반 사용자 환경)
            • 명령프롬프트에서 사용자의 명령어를 키보드로부터 하나씩 입력받아 처리 결과를 보여주는 방식
            • 사용자와 시스템과의 관계를 봤을 때 함축적인 명령어 체계를 바탕으로 함
            • 제어적 특성을 봤을 때 직접적으로 명령어를 입력함
            • 다양한 명령어들의 조합과 시스템을 통해 할 수 있는 못든 것을 수행할 수 있음 → 가장 유연성이 좋음
            • 행동방식은 명령어를 치면 답을 주는 형식으로 정적
          • GUI(Graphical User Interface, 그래픽 기반 사용자 환경)
            • 마우스를 이용하여 아이콘이나 메뉴를 클릭함으로써 운영체제에게 명령을 전달하고 그 결과를 확인하는 방식
            • 사용자와 시스템과의 관계를 봤을 때 마우스 조작을 통한 포인터의 이동이라는 간접적 접근
            • 제어적 특성을 봤을 때 마우스 포인터를 탐색적으로 옮겨다님
            • 행동방식은 그림, 사운드, 애니메이션 등의 효과를 바탕으로 풍부한 인터페이스를 제공하여 동적
          • NUI(Natural User Interface, 물리적 기반 사용자 환경)
            • 사용자의 동작, 언어, 표정, 뇌파 등을 인식
            • VR, AR, AI 비서 등에서 다양한 시도
            • UX(User eXperience, 사용자 경험)의 목표
            • 사용자와 시스템과의 관계를 봤을 때 오브젝트에 직접적으로 접촉
            • 제어적 특성을 봤을 때 상황에 따라 달라짐
            • 다양하고 세부적인 명령어 체계가 아닌 특정 인터페이스 동작에 집중 → 유연성이 가장 좋지 않음
            • 행동방식은 다이나믹에 사실적 요소를 더 부가함
      • CPU, 주기억장치, 입출력장치 등과 같은 하드웨어 자원 관리
        • process 관리
          • multi-processing
            • 둘 이상의 프로세스를 CPU가 동시에 실행함 → multi tasking
            • multi programming은 둘 이상의 프로그램을 메모리에 실어 CPU가 실행하도록 함
        • 주기억장치 관리
          • 가상메모리 기술을 이용해 메모리 사용을 극대화 함
        • 입출력 장치 관리
          • Spooling(Simultaneous Peripheral Operation On-Line) 지원
          • 여러 프로세스들의 입출력 작업이 충돌하지 않도록 조절 할당
      • 작업의 순서 scheduling
      • 프로그램 실행을 제어하며 데이터와 파일의 읽기 쓰기 관리
        • 파일 관리와 API
          • 응용 프로그램 개발의 어려움
            • 입출력 장치, 보조기억장치 등 컴퓨터 하드웨어를 사용자가 직접 다루는 경우
          • 중간에 운영체제(또는 언어 개발 도구)가 API를 제공
            • API(Application Programming Interface)
            • 응용소프트웨어에서 하드웨어 제어를 쉽게 사용할 수 있도록 제공
            • Specification만 제공하고 implementation은 숨김
            • SDK(소프트웨어 개발 도구) : 구현에 해당하는 라이브러리 제공
          • 사용자에게 입출력 시스템, 보조기억장치는 하나의 파일로 간주
      • 입출력 연산 control
      • 컴퓨터 shutdown, rebooting
    • 운영체제의 종류와 특성
      • DOS(Disk Operation System)
        • 처음으로 개인용 컴퓨터에서 사용된 운영체제
        • 1980년대와 90년도 초반까지 대부분의 pc에서 사용됨
        • MS-DOS, PC-DOS, Dr-DOS 등
        • MS-DOS가 일반적으로 많이 사용됨
        • CLI 기반으로 사용자들은 필요한 명령어들을 숙지하여 사용함
        • 멀티태스킹 불가능
      • OS/2 (Operating System/2)
        • MS와 IBM이 초기에 제작한 컴퓨터 운영체제(IBM PS/2용 운영체제)
        • 처음 80286 컴퓨터를 위해 설계되었으나 80386이나 80486 컴퓨터에서 사용할 수 있도록 업그레이드 됨
        • 장점
          • 비슷한 시기의 일반 개인용 컴퓨터 운영체제보다 안정성이 뛰어남
          • 응용 프로그램에 의한 시스템 다운 현상이 없음
          • 파일 손실 가능성과 디스크의 단편화 현상이 적음
          • GUI 방식으로 사용자 인터페이스인 WPS(Work Place Shell)를 사용
          • folder 개념의 file 관리
        • 단점
          • OS/2를 기반으로 한 소프트웨어 개발자의 부재
          • OS/2의 초기 버전인 MS-DOS 프로그램을 제대로 실행하지 못해 OS/2의 수요가 거의 없었음
      • Windows
        • MS사에서 만든 GUI 환경의 운영체제 제품 명
        • 1985년 Windows 1.0을 발표한 후 꾸준히 업그레이드
        • 1990년 Windows 3.0부터 대중들에게 널리 알려짐
        • 1995년 Windows 95가 출시
          • 통합된 TCP/IP, 전화 접속 네트워킹, 긴 파일 이름 지원 등이 포함됨
        • 현재
          • 멀티미디어 기능이 대폭 보강된 Windows XP, Windows Vista 등이 나옴
          • 현재는 Windows 11이 나옴(2021.06)
      • UNIX
        • 1969년에 AT&T의 벨 연구소에서 개발한 운영체제
          • 중형 컴퓨터에 사용하도록 고안됨(MULTICS에서 출발)
          • Dennis Ritchie, Ken Thomson이 개발
          • C, 어셈블러를 이용해 개발
        • 여러가지 유틸리티가 공개되면서 일반 사용자들에게 확산
        • 특징
          • 다중 사용자, 다중작업 처리 가능
          • 프로그램 개발이 쉬운 운영체제
          • 일반통신 서비스 프로그램은 대부분 Unix를 기반으로 함
      • Linux
        • 1991년 핀란드의 대학생이었던 리누스 토발즈가 Unix 기반 개인 운영체제로 만듦
        • 오픈소스 os로 프로그래머가 원하는대로 특정 기능을 추가할 수 있음
        • 어느 플랫폼에도 포팅이 가능하고 무료
        • Redhat, Debian, Slackware
        • CentOS, OpenSuse, Ubuntu 등
      • Solaris
        • Unix 계열의 운영체제
        • Linux보다 훨신 먼저 출시된 운영체제
        • SUN에서 제작한 Sparc CPU를 사용한 기종에서만 사용되는 전용 운영체제였음
        • 인텔 아키텍처의 대량 보급으로 인텔용 Solaris도 출시
      • Mac OS
        • 애플 매킨토시 계열 os
        • 개인용 컴퓨터에 GUI를 최초로 도입함
        • 1984년에 처음으로 세상에 선보인 이후로 거듭 발전
        • 클래식 시리즈와 Mack OS X이후의 것으로 구분함
        • 최신버전은 Mac OS 12.0
        • 문서 편집, 그래픽 분야에서 높은 호응도
      • iOS
        • Mac OS X를 터치 기반 모바일 기기용으로 재구성
        • 초기에는 iPhone OS라고 했으나 2016.6 버전4부터 iOS로 개명
        • Mac OS와 인터페이스는 전혀 다르지만 애플의 객체지향 API인 코코아 기반 프레임워크는 공통적으로 사용됨
        • 멀티터치 제스쳐 기반 인터페이스 제공
        • Safari, iTunes, iBooks, iCloud 내장 제공
      • 모바일 운영체제
        • 현재 세계 시장에 공급됟는 범용으로 사용되는 모바일 운영체제
          • Windows mobile, Symbian, Palm, BlackBerry, Linux, Android 등
        • MS의 Windows Mobile, Nokia의 Symbian : 사용이 편리했으나 단종됨
        • Apple, Microsoft, Palm 등은 좀 더 많은 개발자와 사용자들에게 API를 제공
        • Linux는 모든 것을 공개함
        • Android : Linux 커널 2.6 기반 오픈소스, 공개표준
          • 2005년 구글이 캘리포니아주의 작은 회사를 인수(안드로이드)
          • 2007년 구글, 퀄컴, 인텔, 삼전, LG가 세계 이동통신회사 연합(OHA)을 결성하고 모바일 OS공개 표준 개발 예고
          • Linux 커널 2.6 기반 안드로이드 발표, 오픈소스 선언
          • 자바, 코틀린으로 응용프로그램을 개발하고 개발된 앱은 안드로이드 마켓에서 배포
          • 버전은 알파벳 C부터 음식이름(디저트나 케익류) 알파벳 순으로 코드명을 사용함
          • 반년 혹은 1년단위로 업그레이드