포스트

2024.08.27 프로그래머스 - CS 기초 - 2

CS 기초 - 2

컴퓨터 구조의 설계와 구현

컴퓨터 HW구성

  • 중앙 처리 장치 : CPU
  • 주 기억장치 : Memory (RAM / ROM)
  • 보조 기억장치 : Storage (HDD, SSD)
  • 입출력 장치 : I/O Devices (Keyboard, Mouse, Display)

중앙처리 장치 (CPU)

  • 제어장치 : 명령어를 해성하여 그 실행에 필요한 제어 신호를 발생시킴
  • ALU : 산술 및 논리 연산 등을 수행
  • 레지스터 : 연산의 대상 및 연산 결과 등을 저장

명령어 집합 구조 :ISA

  • Instruction Set Architecture
    • 마이크로프로세서가 인식해서 기능을 이해하고 시랳ㅇ할 수 있는 명령어
  • 정의 하는 것
    • 중앙처리장치가 표현할 수 있는 자료형
    • 중앙처리장치에 명령할 수 있는 기계어 명령어들의 종류
    • 주소 지정법
  • 기계어 명령어는 사람이 알아보기 불편하므로 주로 어셈블리로 표현
  • 같은 ISA를 가지는 컴퓨터에는 (원론적으로) 같은 프로그램을 실행 할 수 있음

  • 명령어 파이프라인
    1. 모든 명령어들의 실행을 동일한 단계들로 나눈다
    2. 한 클록 사이클에 한 단계씩 진행하도록한다
    3. 동시에 여러 명령어들의 서로 다른 단계를 실행

기억장치 (memory)

기억장치.png

프로그래밍 번역과 실행

프로그래밍 언어의 분류

  • 고수준 : 사람 친화적
  • 저수준 : 컴퓨터 친화적

번역 단계

  1. 원시 코드
    1. 프로그래밍 언어에 따라 다른 번역기
    2. 구문 구조를 해석하고 특정 기계를 대상으로 어셈블리 코드를 생성
  2. 어셈블리 코드
    1. 어셈블러에 의하여 거의 1:1 번역
  3. 목적 코드

컴파일 방식, 인터프리터 방식

  • 컴파일 방식의 장점
    • 번역을 실행 이전에 해 두므로 코드를 공들여 최적화 할 수 있다.
    • 코드 실행의 효율이 높다
  • 인터프리터 방식의 장점
    • 다른 컴퓨터로 옮겨 실행하는 것이 편리
    • 대화형 개발이 가능

운영체제의 역할과 구조

  • 시스템 소프트웨어
    • 컴퓨터 시스템을 운용하거나 소프트웨어 개발을 지원하는 데 이용되는 소프트웨어의 모음
      • 운영체제
      • 컴파일러
      • 링커,로더
      • 시스템 운용 도구들

운영체제

컴퓨터 시스템이 살아가기 위하여 반드시 필요한소프트웨어

  • 역할
    • 컴퓨터 시스템의 자원을 관리
      • 프로세서 시간, 메모리 공간, 입출력 장치, 파일 등
    • 사용자에게 시스템 자원을 활용할 수 있는 기능을 제공
      • 단일 사용자 시스템의 경우, 다소 간단
      • 다중 사용자 시스템의 경우, 다소 복잡
  • 종류
    • Windows
    • Linux
    • macOS
    • Unix
    • IOS
    • Android
  • 운영체제 분류
    • 범용 vs 내장형 : 운영 대상 시스템
    • 단일 사용자 vs 다중 사용자 : 사용자
    • 단일 프로세서 vs 멀티 프로세서 : 중아처리장치
    • 시분할 방식 vs 다중 프로그래밍 : (작업방식)

운영체제 커널

  • 운영체제의 핵심 (core) 부분에 위치
    • 시스템의 모든 측면에 대한 완전한 권한을 갖고 있음
    • 사용자 간 충돌 또는 침해로부터의 보호와 함께 효율적이면서 공정한 자원공유 담당
  • 시스템 자원에 대한 완전한 제어권을 구사하기 위해서 HW의 지원이 필요
  • 커널외의 부분 (”사용자”) 을 이루는 코드는 시스템 자원접근을 위해서 커널의 서비스를 이용
    • 대표적으로 system Call

System Call

  • 운영체제 커널이 제공하는 서비스에 대한 응용프로그램의 요청을 가능하게 하기 위한 프로그래밍 인터페이스
  • 응용프로그램은 보통고급 API 함수들을 통하여 시스템 호출에 접근
  • 시스템 콜의 호출은 프로세서의 실행 문맥 (context) 를 특권모드 (privileged mode)로 전환시킴

프로세스 관리와 스케줄링

프로세스

컴퓨터 시스템에서 CPU 및 메모릴르 이용하여 실행중인 작업

  • 컴퓨터에서 실행되는 거의 모든 소프트웨어는 하나 이상의 프로세스를 이룸
  • 프로세스는 생명주기를 가지며, 이것은 운영체제가 관리
  • 프로그램 ≠ 프로세스
    • 프로그램은 실행이 준비된 소프트웨어의 덩어리
    • 프로세스는 지금 실행하고 있는소프트웨어의 생명체

스케줄링

어느 순간 어느 작업을 수행할 것인지를 결정하는 것

  • 효율성과 공정성 사이의 이해득실’
    • 응답시간 최소화
      • 각 작업이 도착했을 때로 부터 완료된 때까지의 시간이 중요
    • 시스템 처리율 을 극대화
      • 문맥전환의 오버헤드를 고려함녀 응답시간과 같은 기준이 아님
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.