Concurrent Programming is Hard! Race condition Deadlock Livelock / Starvation / Fairness Iterative Servers 위 그림의 프로세스를 설명하면 아래와 같다. 한 번에 한 번의 일을 처리
동적 메모리 할당 > 왜 쓰는가? C 프로그램에서 저수준의 mmap과 munmap 함수를 사용해서 생성하고 삭제할 수 있지만, 추가적인 가상 메모리를 런타임에 획득할 필요가 있을 때, 동적 메모리 할당기를 사용하는 것을 좀 더 편리하고 호환성이 좋다. 동적 메
메모리는 손실에 취약하다. 만일 프로세스가 무심코 다른 프로세스가 사용하고 있는 메모리를 쓰게 되면, 이 프로세스는 프로그램의 논리와 전혀 무관하게 실패하게 될 수 있다.메모리를 보다 효율적이고 더 적은 에러를 갖도록 관리하기 위해 사용가상메모리(Virtual Memo
동시성(concurrency) : 다수의 동시에 벌어지는 일을 갖는 시스템에 관한 일반적인 개념병렬성(parallelism) : 동시성을 사용해서 시스템을 보다 빠르게 동작하도록 하는 것으로, 컴퓨터 시스템의 다양한 수준의 추상화에서 활용쓰레드를 이용하면 한 개의 프로
개별 시스템 관점에서의 네트워크 개별 시스템의 관점에서 볼 때, 네트워크는 단지 또 다른 입출력장치로 볼 수 있다. 메인 메모리로부터 네트워크 어댑터로 일련의 바이트를 복사할 때, 데이터는 로컬디스크 드라이브 대신에 네트워크를 통해서 다른 컴퓨터로 이동된다. 마찬가지로
프로세스는 실행 중인 프로그램에 대한 운영체제의 추상화다. 프로세스는 동시에(concurrently) 실행될 수 있으며, 한 프로세스의 인스트럭션들이 다른 프로세스의 인스트럭션들과 섞일 수 있다.이는 한 개의 CPU가 다수의 프로세스를 동시에 실행하는 것처럼 보이게 해
운영체제(Operating System)는 하드웨어와 소프트웨어 사이에 위치한 소프트웨어 계층으로 생각할 수 있다. 응용프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해서 해야 한다.운영체제는 두 가지 주요 목적을 가지고 있다.제멋대로 동작하는 응용프로그램들이 하
위 그림처럼 프로세서가 프로그램을 실행하면 프로그램이 로딩될 때 디스크에서 메인 메모리로 복사되고, 프로그램을 실행할 때 인스트럭션들은 메인 메모리에서 프로세서로 복사된다. 이러한 여러 복사과정들이 프로그램의 실제 작업을 느리게 하는 오버헤드(overhead)다.레지
프로그래머는 본인이 만든 프로그램을 실행할 때 무슨 일이 일어나는지 알기 위해서 전형적인 시스템에서의 하드웨어 조직을 이해할 필요가 있다. 아래는 시스템의 하드웨어 조직 구성도이다. 버스(Buses) : 시스템 내를 관통하는 전기적 배선군을 버스라고 하며, 컴포넌트들