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를 가지는 컴퓨터에는 (원론적으로) 같은 프로그램을 실행 할 수 있음
- 명령어 파이프라인
- 모든 명령어들의 실행을 동일한 단계들로 나눈다
- 한 클록 사이클에 한 단계씩 진행하도록한다
- 동시에 여러 명령어들의 서로 다른 단계를 실행
기억장치 (memory)
프로그래밍 번역과 실행
프로그래밍 언어의 분류
- 고수준 : 사람 친화적
- 저수준 : 컴퓨터 친화적
번역 단계
- 원시 코드
- 프로그래밍 언어에 따라 다른 번역기
- 구문 구조를 해석하고 특정 기계를 대상으로 어셈블리 코드를 생성
- 어셈블리 코드
- 어셈블러에 의하여 거의 1:1 번역
- 목적 코드
컴파일 방식, 인터프리터 방식
- 컴파일 방식의 장점
- 번역을 실행 이전에 해 두므로 코드를 공들여 최적화 할 수 있다.
- 코드 실행의 효율이 높다
- 인터프리터 방식의 장점
- 다른 컴퓨터로 옮겨 실행하는 것이 편리
- 대화형 개발이 가능
운영체제의 역할과 구조
- 시스템 소프트웨어
- 컴퓨터 시스템을 운용하거나 소프트웨어 개발을 지원하는 데 이용되는 소프트웨어의 모음
- 운영체제
- 컴파일러
- 링커,로더
- 시스템 운용 도구들
- 컴퓨터 시스템을 운용하거나 소프트웨어 개발을 지원하는 데 이용되는 소프트웨어의 모음
운영체제
컴퓨터 시스템이 살아가기 위하여 반드시 필요한소프트웨어
- 역할
- 컴퓨터 시스템의 자원을 관리
- 프로세서 시간, 메모리 공간, 입출력 장치, 파일 등
- 사용자에게 시스템 자원을 활용할 수 있는 기능을 제공
- 단일 사용자 시스템의 경우, 다소 간단
- 다중 사용자 시스템의 경우, 다소 복잡
- 컴퓨터 시스템의 자원을 관리
- 종류
- 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 라이센스를 따릅니다.