[컴퓨터 시스템 01] 개요

박윤찬·2022년 4월 5일
0

컴퓨터 시스템

목록 보기
1/2
post-thumbnail

1. 컴퓨터 시스템 책의 목적

  • 모든 컴퓨터 시스템 내에서 지속적으로 유지되는 개념들을 설명하고, 구체적으로 보여주는 것
  • 프로그래머의 관점에서, 애플리케이션 프로그래머들이 시스템에 대한 자신의 지식을 이용해서 더 좋은 프로그램을 작성할 수 있게 설명하는 것

❗참고
리눅스 시스템에서 컴파일하고 실행된 많은 프로그램 예제를 포함하고 있다. 이러한 머신을 사용할 수 있으며, 로그인해서 파일 리스트를 출력하고 디렉토리를 변경하는 것과 같은 간단한 작업을 할 수 있다고 가정

2. 책을 읽는 방법

  • 프로그래머의 관점에서 컴퓨터 시스템이 어떻게 동작하는지 배우는 것을 즐기는 것
  • 시스템에 대해 배우는 유일한 방법은 실제로 실행 가능한 문제를 풀어보거나, 실제 시스템에서 프로그램을 작성하고 돌려보는 것과 같이 시스템을 이용하는 것
  • 각각의 문제를 스스로 풀어보도록 노력하고, 제대로 이해하였는지 확인하기 위해 해답을 체크하기

❗체크 방법
★ 몇 분 소요. 프로그래밍이 거의 필요없음
★★ 최대 20분 소요. 코드 작성하고 테스트해야 하는 경우도 있음
★★★ 상당한 노력이 필요함. 약 1~2시간 정도.
★★★★ 실습과제. 10시간 정도의 노력이 필요함

3. 책의 구성

  • 1장 간단한 "hello, world"프로그램의 일생 주기를 추적해서 컴퓨터 시스템에서의 주요 아이디어와 주제들을 소개
  • 2장 정보의 표현과 처리. 컴퓨터 산술연산에 대해 설명하며, 특히 프로그래머에게 영향을 미치는 비부호형과 2의 보수 표시의 특성을 강조
  • 3장 프로그램의 기계 수준 표현. C 컴파일러가 만든 x86-64 기계어코드를 이해하는 방법
    ex) 조건문, 반복문, switch문과 같은 여러 제어 구조체에 의해서 생성된 기본 인스트럭션 패턴
         스택 할당, 레지스터 사용 관습, 매개변수의 전달을 포함하는 프로시져의 구현
  • 4장 프로세서 구조. 기본적인 조합 및 순차 논리 회로들을 다루며, 회로들이 어떻게 "Y86-64"라고 부르는 x86-64 인스트럭션 집합의 일부를 실행할 수 있는 데이터 경로에 연결될 수 있는지 보임
  • 5장 프로그램 성능 최적화하기. 코드의 성능을 개선하기 위한 여러가지 기술들을 소개. 컴파일러가 효율적인 머신 코드를 생성할 수 있는 방식으로 C 코드를 작성하기 위해서 프로그래머가 배워야 하는 아이디어들도 학습
  • 6장 메모리 계층 구조. 메모리 시스템은 응용 프로그래머가 가장 잘 볼 수 있는 컴퓨터 시스템의 한 부분. RAMROM 메모리에 대해 배우게 되며, 자기 디스크와 solid state 드라이브의 구조와 구성에 대해 다룸
  • 7장 링커. 정적 및 동적 링킹 과정 모두를 다루며, 재배치 가능 및 실행 목적 파일, 심볼 해석, 재배치, 정적 라이브러리, 공유 객체 파일, 위치 독립성 코드, 라이브러리 삽입이 포함
  • 8장 예외적인 제어흐름. 단일 프로그램 모델을 넘어서, 예외적인 제어흐름의 일반적인 개념을 소개. 시스템의 전체 수준에서의 예외적인 제어프름들을 다루게 되며, 하위 하드웨어 예외나 인터럽트에서부터 동시성 프로세스들 간의 문맥 전환, 리눅스 시그널의 수신으로 인해 발생한 갑작스런 제어 프름의 변경, 스택 운용방식을 깨뜨리는 C에서의 비지역성 점프까지 포함
  • 9장 가상메모리. 가상메모리 시스템의 작동 방식과 특성을 이해시키는 것이 목적. 표준 라이브러리 함수인 malloc과 free연산과 같은 저장 장치 할당기들에서의 연산에 대해 설명
  • 10장 시스템 수준 입출력. 파일과 식별자와 같은 Unix I/O의 기본 개념들을 다룸. 어떻게 파일이 공유되고, I/O 재설정이 동작하며, 메타 데이터를 어떻게 접근하는지에 대해 설명
  • 11장 네트워크 프로그래밍. 네트워크는 프로그래밍하기에 재밌는 I/O 디바이스로, 앞의 장에서 배우는 프로세스, 시그널, 바이트 순서, 메모리 매핑, 동적 저장 장치 할당과 같은 여러 개념을 함께 적용
  • 12장 동시성 프로그래밍. 동기를 부여하는 예제로 인터넷 서버 설계를 이용해서 동시성 프로그래밍을 소개.
profile
개인 공부를 위한 블로그입니다.

0개의 댓글

관련 채용 정보