# CSAPP

33개의 포스트

[WEEK 09] 컴퓨터 시스템 - 8. 예외적인 제어흐름

컴퓨터 시스템 - 8. 예외적인 제어흐름

2021년 10월 9일
·
0개의 댓글
post-thumbnail

Pintos Project 2 User Progs

핀토스 2번째 과제인 User Program이 시작되었습니다. 정글 Docs에 CSAPP 책 8.2 ~ 8.5와 연관되어 있다 해서 해당 부분 CSAPP을 정리해 보았습니다.프로그램을 동작시키면 마치 그 프로그램이 컴퓨터에 있는 자원(ex. CPU, 메모리)을 배타적으

2021년 10월 4일
·
0개의 댓글
post-thumbnail

[OS] CSAPP 12: Concurrent Programming(1)

Concurrent Programming is Hard! Race condition Deadlock Livelock / Starvation / Fairness Iterative Servers 위 그림의 프로세스를 설명하면 아래와 같다. 한 번에 한 번의 일을 처리

2021년 9월 27일
·
0개의 댓글

Ch8.4 Process Control

Unix 운영체제는 C 프로그램 프로세스들을 다루기 위한 여러가지 system call들을 제공합니다.getpid, getppidforkwaitpidexecve각 프로세스들은 양의 정수인 식별자 Process ID (PID)를 가집니다.getpid 함수는 호출한 프로세

2021년 9월 26일
·
0개의 댓글
post-thumbnail

[C] CSAPP Proxy Lab

http://csapp.cs.cmu.edu/3e/proxylab.pdfA Web proxy is a program that acts as a middleman between a Web browser and an end server.Proxies are used

2021년 9월 25일
·
0개의 댓글

Ch7. Linking

링킹은 여러 코드와 데이터를 메모리에 로드되고 실행될 수 있는 하나의 파일로 만드는 과정총 3가지 경우 \- 컴파일 타임(소스 코드가 머신코드로 바뀔 때) \- 로드 타임(프로그램이 메모리에 올라가고 로더에 의해 실행될때) \- 런타임(프로그램 동작)예전에는 링킹

2021년 9월 20일
·
0개의 댓글

CSAPP Ch6. The Memory Hierarchy

6장에서 필수적으로 답할 수 있는 질문들을 모아봤습니다. 아직 6.4까지 밖에 못읽어서 더 추가적으로 들어갈 질문들은 업데이트해 가도록 하겠습니다.Locality 종류 2가지Temporal locality란?Spatial locality란?stride-k referen

2021년 9월 14일
·
0개의 댓글
post-thumbnail

[CS] 동적 메모리 할당

동적 메모리 할당 > 왜 쓰는가? C 프로그램에서 저수준의 mmap과 munmap 함수를 사용해서 생성하고 삭제할 수 있지만, 추가적인 가상 메모리를 런타임에 획득할 필요가 있을 때, 동적 메모리 할당기를 사용하는 것을 좀 더 편리하고 호환성이 좋다. 동적 메

2021년 9월 10일
·
0개의 댓글
post-thumbnail

[CS] 가상메모리

메모리는 손실에 취약하다. 만일 프로세스가 무심코 다른 프로세스가 사용하고 있는 메모리를 쓰게 되면, 이 프로세스는 프로그램의 논리와 전혀 무관하게 실패하게 될 수 있다.메모리를 보다 효율적이고 더 적은 에러를 갖도록 관리하기 위해 사용가상메모리(Virtual Memo

2021년 9월 9일
·
0개의 댓글

Ch2.1 Information Storage

메모리에 있는 개별 비트에 접근하는 대신, 대부분 컴퓨터는 8 비트 단위 블록인 바이트를 가장 작은 메모리 단위로 사용합니다. Machine-level 프로그램은 virtual memory라 부르는 메모리를 그저 큰 바이트 배열로 해석합니다. 메모리의 모든 바이트들은

2021년 8월 25일
·
0개의 댓글

Introduction

현대 컴퓨터들은 두 값을 가지는 신호로 정보를 저장하고 표현합니다. 이 binary digits 또는 bits라 불리는 신호들은 디지털 혁명의 근간을 형성하고 있습니다. 인도로부터 시작해 수천년 동안 사용되어온 10진법은 인간에게 친숙한 표현법입니다. 인간은 손가락이

2021년 8월 20일
·
0개의 댓글

Ch1.10 Summary

컴퓨터 시스템들은 프로그램을 동작하는데 서로 협력하는 하드웨어와 시스템 소프트웨어들로 구성되어 있습니다. 컴퓨터 내부 정보들은 그룹화된 비트들로 표현되며 context에 따라 다르게 해석됩니다. 프로그램들은 다른 프로그램들에 의해 여러 다른 형태들로 변환됩니다. ASC

2021년 8월 18일
·
0개의 댓글

Ch1.9 Important Themes

첫장의 마지막 내용입니다. 이러한 논의에서 벗어난 하나의 중요한 개념은 시스템은 그저 하드웨어일 뿐이라는 점입니다. 하드웨어와 시스템 소프트웨어가 결합해서 프로그램을 동작하는 목표를 위해 협력할 뿐입니다. 책의 나머지 부분은 하드웨어와 소프트웨어의 상세사항에 대해서 다

2021년 8월 18일
·
0개의 댓글

Ch1.8 Systems Communicate with Other Systems Using Networks

지금까지 시스템을 살펴보면서, 시스템을 하드웨어와 소프트웨어로 분리해서 생각해왔습니다. 실제로는, 현대 시스템들은 종종 네트워크로 다른 시스템과 연결되어 있습니다. 개별 시스템 시점에서 보면, 네트워크는 다른 형태의 입출력 장치로 보일 수 있습니다. 아래 그림을 보시죠

2021년 8월 16일
·
0개의 댓글

Ch1.7 The Operating System Manages the Hardware

hello 프로그램 예제로 다시 돌아 오겠습니다. 쉘이 로드하고 hello 프로그램을 돌릴때 그리고 프로그램 메시지를 출력할 때, 프로그램은 키보드, 디스플레이, 디스크, 메인메모리 등에 직접적으로 접근하지 않습니다. 오히려, 이러한 장치들은 operating syst

2021년 8월 13일
·
1개의 댓글

Ch1.6 Storage Devices Form a Hierarchy

더 작고 빠른 저장장치 (예를 들어, 캐시 메모리)를 프로세서와 보다 크고 느린 저장장치(예를 들어, 메인 메모리) 사이에 두는 것은 보편적인 것으로 보입니다. 사실 모든 컴퓨터의 저장 장치들은 아래 그림과 같은 memory hierarchy형태로 구성됩니다.Figur

2021년 8월 12일
·
0개의 댓글

Ch1.5 Caches Matter

지금까지 살펴본 예시에서 얻을 수 있는 교훈은 시스템인 데이터를 한곳에서 다른 돗으로 옮기는에 많은 시간을 소비한다는 것입니다. hello 프로그램의 기계 인스트럭션은 디스크에 저장되어 있습니다. 프로그램이 로드될 때, 이 인스트럭션들이 메인메모리에 복사됩니다. 프로세

2021년 8월 12일
·
0개의 댓글

Ch1.4 Processors Read and Interpret Instructions Stored in Memory

현시점에서, hello.c 소스코드는 컴파일 시스템에 의해 디스크에 저장된 executable object file hello로 변환되었습니다. 유닉스 시스템에서 executable file을 돌리기 위해, 우리는 쉘에 해당 파일 이름을 입력합니다.쉘은 명령어 인터프리

2021년 8월 11일
·
0개의 댓글

Ch1.3 It Pays to Understand How Compilation Systems Work

hello.c 프로그램 같이 간단한 프로그램에서는, 정확하고 효율적인 기계어를 생성하기 위해 컴파일 시스템에 의존합니다. 하지만, 왜 프로그래머들이 컴파일 시스템의 동작 방식을 이해해야하는지 몇가지 중요한 이유가 있습니다.Optimizing program perform

2021년 8월 9일
·
0개의 댓글

Ch1.2 Programs Are Translated by Other Programs into Different Forms

hello 프로그램은 높은 레벨의 C 프로그램으로서 여정을 시작합니다. 왜냐하면 C 프로그램은 인간에 의해서 읽히고 이해될 수 있기 때문입니다. 하지만 hello.c를 시스템에서 돌리기 위해, 개별 C statement들은 다른 프로그램들에 의해 low-level ma

2021년 8월 9일
·
0개의 댓글