컴퓨터 시스템은 어플리케이션 프로그램을 동작하기 위해 함께 작용하는 하드웨어와 시스템으로 이루어져 있습니다. 특정한 시스템 실행은 변화했기도 하지만, 기초적인 개념은 변하지 않았습니다. 모든 컴퓨터 시스템들은 유사한 기능을 수행하는 하드웨어와 소프트웨어 구성요소를 가지
hello 프로그램은 프로그래머가 에디터로 생성하고 hello.c라 불리는 텍스트 파일로 저장함으로써 소스 프로그램으로서의 여정을 시작합니다. 소스 프로그램은 연속된 0, 1 비트의 집합이며 8-bit 단위 청크인 바이트로 구성되어 있습니다.각 바이트들은 프로그램의 텍
hello 프로그램은 높은 레벨의 C 프로그램으로서 여정을 시작합니다. 왜냐하면 C 프로그램은 인간에 의해서 읽히고 이해될 수 있기 때문입니다. 하지만 hello.c를 시스템에서 돌리기 위해, 개별 C statement들은 다른 프로그램들에 의해 low-level ma
hello.c 프로그램 같이 간단한 프로그램에서는, 정확하고 효율적인 기계어를 생성하기 위해 컴파일 시스템에 의존합니다. 하지만, 왜 프로그래머들이 컴파일 시스템의 동작 방식을 이해해야하는지 몇가지 중요한 이유가 있습니다.Optimizing program perform
현시점에서, hello.c 소스코드는 컴파일 시스템에 의해 디스크에 저장된 executable object file hello로 변환되었습니다. 유닉스 시스템에서 executable file을 돌리기 위해, 우리는 쉘에 해당 파일 이름을 입력합니다.쉘은 명령어 인터프리
지금까지 살펴본 예시에서 얻을 수 있는 교훈은 시스템인 데이터를 한곳에서 다른 돗으로 옮기는에 많은 시간을 소비한다는 것입니다. hello 프로그램의 기계 인스트럭션은 디스크에 저장되어 있습니다. 프로그램이 로드될 때, 이 인스트럭션들이 메인메모리에 복사됩니다. 프로세
더 작고 빠른 저장장치 (예를 들어, 캐시 메모리)를 프로세서와 보다 크고 느린 저장장치(예를 들어, 메인 메모리) 사이에 두는 것은 보편적인 것으로 보입니다. 사실 모든 컴퓨터의 저장 장치들은 아래 그림과 같은 memory hierarchy형태로 구성됩니다.Figur
hello 프로그램 예제로 다시 돌아 오겠습니다. 쉘이 로드하고 hello 프로그램을 돌릴때 그리고 프로그램 메시지를 출력할 때, 프로그램은 키보드, 디스플레이, 디스크, 메인메모리 등에 직접적으로 접근하지 않습니다. 오히려, 이러한 장치들은 operating syst
지금까지 시스템을 살펴보면서, 시스템을 하드웨어와 소프트웨어로 분리해서 생각해왔습니다. 실제로는, 현대 시스템들은 종종 네트워크로 다른 시스템과 연결되어 있습니다. 개별 시스템 시점에서 보면, 네트워크는 다른 형태의 입출력 장치로 보일 수 있습니다. 아래 그림을 보시죠
첫장의 마지막 내용입니다. 이러한 논의에서 벗어난 하나의 중요한 개념은 시스템은 그저 하드웨어일 뿐이라는 점입니다. 하드웨어와 시스템 소프트웨어가 결합해서 프로그램을 동작하는 목표를 위해 협력할 뿐입니다. 책의 나머지 부분은 하드웨어와 소프트웨어의 상세사항에 대해서 다
컴퓨터 시스템들은 프로그램을 동작하는데 서로 협력하는 하드웨어와 시스템 소프트웨어들로 구성되어 있습니다. 컴퓨터 내부 정보들은 그룹화된 비트들로 표현되며 context에 따라 다르게 해석됩니다. 프로그램들은 다른 프로그램들에 의해 여러 다른 형태들로 변환됩니다. ASC