파일 I/O와 디렉터리 컨트롤파일 I/O와 관련된 ANSI 표준 함수를 사용하면 운영체제의 종류에 상관없이 파일이 생성되고 파일에서 데이터를 가져오고 I/O 연산을 수행할 수 있다. H/W 가 있는데 이 하드웨어에 운영체제로 윈도우, 리눅스, 유닉스를 설치할 수 있다. 그다음 운영체제 위에서 프로그램을 동작시킨다. 프로그램을 동작시킬 때 각 운영체제에서 파일을 생성한다. 중요한 사실은 파일이 저장이 될 때 저장되는 방식은 파일 시스템에 의존적이다.파일이라는 것 자체를 어떻게 정의하고 구성할 것이냐? 파일 시스템은 운영체제의 일부이다.즉 파일 시스템은 운영체제에서 구현하고 있는 독립적인 시스템이다.그래서 호출할 때 ANSI 표준 함수를 호출하지만 실제 파일을 만드는 대상은 운영체제들이다.윈도우에서 파일을 ..
메모리의 범위와 종류컴퓨터를 구성하는 요소 중에서 임시적이든, 영구적이든 저장 기능을 조금이라도 가지고 있으면 무조건 메모리의 범위에 포함이 된다. 그럼 메모리라 불릴 수 있는 요소들을 나열해 보자.메인(Main) 메모리가장 먼저 떠올릴 수 있는 것은 메인 메모리인 램(RAM)이다.보다 정확히 말하면 D램(D-RAM) 계열의 메모리이다.우리가 컴퓨터를 구입할 때 CPU 다음으로 중요하게 생각하는 것 중 하나이다.참고로 메인 메모리가 반드시 램이어야 할 이유는 없다.따라서 메인 메모리와 램에는 등호 관계가 성립하지 않는다.그러나 거의 모든 컴퓨터가 메인 메모리로 램을 사용하므로 메인 메모리와 램을 동일한 의미로 사용하겠다.레지스터레지스터들도 당연히 메모리이다. CPU 안에 내장되어 있어서 연산을 위한 저장..
스레드 풀스레드 풀에 대한 이해스레드 풀이 필요한 이유스레드 생성은 쉬운 작업이 아니다. 그래서 매번 요구되는 일에 대해 스레드가 새로 생성되고 할당되면 굉장히 부담스럽다. 또한 요구된 일들을 동시에 처리되는 게 아니라 시간적인 텀을 두고 처리해도 된다면 하나의 스레드를 생성하고 이 스레드가 요구된 일들을 다 처리한다면 스레드를 또 만들 필요가 없다.그래서 미리 스레드를 만들어두고 이 스레드를 스레드 풀에 저장해 두다가 요청이 오면 스레드 풀에서 스레드를 꺼내서 요청에 스레드를 할당한다. 요청한 작업이 완료되면 해당 스레드를 풀에 반환한다. 즉 적정한 수의 스레드를 미리 생성해서 풀에 저장하고 일이 들어올 때마다 스레드를 꺼내 사용하고 다 사용하면 다시 반환한다. 이러한 작업을 통해 성능을 향상할 수 있..
스레드 동기화 기법2순서 동기화 즉 순서를 조절하겠다는 소리다.순서를 동기화하는 이유가 무엇인지 아는 게 중요하다.생산자/소비자 모델데이터 입력받고 입력된 데이터 출력 구조이다.입력된 크기만큼 출력되기 때문에 출력이라는 것은 입력에 의존적이다.반면 입력은 외부 환경에 의존적이다.여기서 발생할 문제는 10B씩 입/출력을 하다가 어느 순간 10MB가 한 번에 들어오면 10MB 데이터를 처리하다가 손실이 일어날 수 있다.계속 읽기만 하면 손실이 없다. 언제 문제가 발생하냐면 읽고 출력을 하는 게 문제이다 출력하는 와중에도 데이터가 계속해서 들어오면 감당이 안 돼서 이러한 과정에서 손실이 발생할 수 있다.그래서 위 이미지와 같이 입출력 모델을 설계한다.입력 스레드는 계속해서 입력을 받고 출력용 버퍼에다가 데이터..