목록시스템|서버|네트워크 (17)
따..딱히 공부하려고 포스팅하는 건 아니니까..!
쓰레드에 대한 자세한 내용↓http://egloos.zum.com/sweeper/v/2815395 1. 프로세스와 쓰레드의 정의 프로세스 : 실행중인 프로그램쓰레드 : 프로세스의 가상 주소 공간에 존재하는 실행 흐름의 단위(함수) 2. 프로세스와 쓰레드의 특성 프로세스 : 완벽히 독립적인 메모리 영역(code, data, heap, stack)을 공유하지않음쓰레드 : 쓰레드를 위한 스택을 생성할뿐, 다른 영역은 공유 -> 스택은 함수 호출시 전달되는 인자, 되돌아갈 주소값, 함수내 선언하는 변수 등을 저장하기 위한 메모리 공간이다. 그래서 스택이 독립적이라는 것은 독립적인 함수 호출이 가능하다는 것이고, 이는 독립적인 실행 흐름을 할 수 있다는 것이다. -> 데이터, 힙영역을 공유하는 것은 전역변수, 동..
새로운 프로세스 생성하기새로운 프로세스를 생성하는 유일한 방법 fork() 시스템 호출이다. #include #include pid_t fork(); // pid_t는 int형 이 시스템 호출은 한번 호출 되면 자식 프로세스를 만드므로, 두 번 반환한다. (= 자식 프로세스에서 0을 반환, 부모 프로세스에서 자식 프로세스의 ID를 반환) 실패 시 -1을 반환한다. 자식 프로세스(child process) : 새로 생성되는 프로세스, 부모 프로세스를 똑같이 복제 (= 부모의 코드, 데이터, 스택, 힙 등을 똑같이 복제)부모 프로세스(parent process) : 자식 프로세스를 생성한 프로세스 ※ 이때, 자식 프로세스와 부모 프로세스는 독립적으로 실행을 한다. 즉, fork() 시스템 호출 이후의 코드부..
vagrant를 이용하여 리눅스를 사용하다보면 윈도우즈에 있는 프로그래밍 파일을 가져오고 싶을 때가 있다.(혹은 비주얼같은 컴파일러를 구매하기 어려워 gnu 컴파일러를 사용하기 위해 파일을 리눅스로 옮기려고 하는 때가 있을 것이다.) 이때, 리눅스 디렉터리와 윈도우즈 디렉터리를 공유하는 방법으로 옮기는 방법이 있다 vagrant 설치 폴더에 Vagrantfile 이라는 파일이 있다. 에디터로 실행하면 위와 같은 내용들이 있는데, 그중에서 붉은색 사각형 부분을 고치면 된다.위 스샷은 이미 수정한 것이고, 처음에는 config.vm.synced_folder "../data", "./vagrant_data" 라고 되어있었을 것이다. config.vm.synced_folder "../data", "./vagra..
프로세스(Process)란? 간단히 말하자면 실행중인 프로그램을 말한다. 그러나 한 프로그램을 여러 번 실행하여 여러 개의 프로세스를 만들 수 있으므로 프로그램 자체가 프로세스인 것은 아니다. (※ 커널에는 프로세스가 하나밖에 없다 = 커널에서는 모든 자료구조와 메모리를 공유할 수 있다) 텍스트 : 프로세스가 실행하는 실행코드를 저장하는 영역데이터 : 전역변수, 정적변수를 위한 메모리 영역힙 : 동적 메모리 할당을 위한 영역스택 : 함수 호출을 구현하기 위한 영역(함수 호출 시 해당 함수의 지역변수, 매개변수, 반환주소, 반환값 등을 포함하는 활성 레코드가 저장)U-영역 : 열린 파일 디스크립터, 현재 작업 디렉터리 등과 같은 프로세스 정보를 저장하는 영역 프로세스를 유지하기 위해서는 커널 내의 프로세스..
1. 파일 시스템파일을 만들 수 있게 해주는 시스템디스크에 위치하며, 하드디스크에서 물리적 위치를 전축의 원리를 이용하여 나눈다. 파일이름을 엔트리에 등록하면 파일시스템 내에 파일 공간이 확보가 된다. 이렇게 파일 공간이 확보되고 나서 파일의 블록 정보를 읽는데, 이때 파일이 블록의 크기를 넘으면 새 파일 블록을 확보 받는다. (예를 들어, 일반적으로 8kb 정도의 블록을 확보하는데 파일크기가 10kb이면 두개의 블록을 확보 받는다. 즉, 10kb의 파일을 저장하기 위해서 16kb의 파일 공간이 확보가 되는 것이다.) 1. 개행문자가 다르다. 즉, 바이너리 파일의 표시방법이 다르다. Windows의 개행문자 : \r + \n 기능이 동시에 들어있다. (Carriage Return + Line Feed)U..
응용 프로그램은 시스템 호출을 통해 필요할 때마다 커널에 서비스를 요청할 수 있다.BUT!! C 언어가 제공하는 라이브러리 함수를 사용할 수도 있다. C 라이브러리 함수는 함수 내에서 관련 시스템 호출을 한다. 따라서 C 라이브러리 함수는 시스템 호출을 보다 쉽게 사용할 수 있도록 포장한 보다 높은 수준의 프로그래밍 인터페이스라고 볼 수 있다. 1. C 파일 모든 데이터를 연속된 바이트 형태로 저장한다. 저장된 데이터에 따라 텍스트 파일과 이진 파일로 구분한다. 텍스트 파일(Text File) : 문자들만으로 이루어진 파일이며, 매 줄마다 새줄문자(\n)를 포함하고 있다.이진 파일(Binary File) : 모든 데이터를 컴퓨터 내부의 이진수 표현 그대로 저장한 파일이며, 이미지 파일이나 실행파일 등이 ..
컴퓨터 시스템 : 하드웨어와 소프트웨어로 구성 - 하드웨어 : CPU, 메모리, 저장장치, 주변장치 등으로 구성- 소프트웨어 : 운영체제, 데이터베이스 시스템 등 유닉스/리눅스는 커널이 하드웨어를 운영관리 하며 다음과 같은 서비스를 제공한다. 1. 프로세스 관리 (Process Management): 여러개의 응용 프로그램들이 실행될 수 있도록 프로세스들을 스케쥴링한다.: 마치 동시에 수행되는 듯한 효과를 낸다. 2. 파일 관리 (File Management): 디스크와 같은 저장장치 상에 파일 시스템을 구성하여 파일을 관리한다. 3. 메모리 관리 (Memory Management): 메인 메모리가 효과적으로 사용될 수 있도록 관리한다. 4. 통신 관리 (Communication Management): ..