Blog Content

  • 14. 태스크 관리 - 태스크 문맥 (Context)

    Category ubuntu_Git on 2012. 4. 10. 03:27

    태스크 문맥의 종류 - 시스템 문맥(System Context) : 태스크의 정보를 유지 하기 위해 커널이 할당한 자료구조 (task_struct, file descriptor, file table, segment table, page table...) - 메모리 문맥(Memory Context) : text, data, stack, heap 영역, swap 공간... - 하드웨어 문맥(Hardware Context) : 문맥 교환을 할 때 태스크의 현재 실행위치에 대한 정보를 유지 (thread 구조, 하드웨어 레지스터 문맥이라고 불림)

    Read more
  • 13. 태스크 관리 (Task List)

    Category ubuntu_Git on 2012. 4. 5. 01:55

    Task List? - 태스크 구조체가 생성이 되고 생성된 구조체를 이중연결 리스트(double linked list)가 가지고 연결해서 관리를 합니다. (init_task 해드에 저장이 됩니다.) Task List와 배열의 장단점에 대해 간단하게 알아보겠습니다. 배열의 장점 : 엑세스(Access) 하는 속도가 빠르다. CPU 점유율이 낮다. 단점 : single linked List로 한 쪽 방향으로만 이동되어 오래걸린다. 확장을 할 수 없다. Task List 장점 : 확장이 가능하다. 앞 뒤로 이동이 가능하다. 단점 : 엑세스(Access) 하는 속도가 느리다. CPU 점유율이 높다.

    Read more
  • 12. 태스크 관리 (Task_Struct 구조체)

    Category ubuntu_Git on 2012. 4. 5. 01:43

    프로세스는 자신만의 자원을 가지고 있는데 리눅스에서는 이러한 것들을 관리해주기 위해 각 프로세스마다 task_struct라는 자료구조를 생성합니다. 각자의 프로세스는 콘텍스트를 가지고 있어서 프로세스에 관한 정보는 task_struct 구조체로 관리됩니다. 태스크 구조체는 커널 레벨입니다. 스레드가 여러개가 존재하는경우 ※ 리눅스에서는 프로세스와 스레드를 구분하지 않습니다. 프로세스와 스레드는 모두 task_struct 구조체가 동일하게 생성되고 관리됩니다. 다른점이라면 스레드는 자원을 공유합니다. 자기만 가지고 있지 않습니다. 프로세스는 자기만 사용하기 위한 공간을 가지고 있습니다.

    Read more
  • 11. 프로세스와 스레드의 차이점

    Category ubuntu_Git on 2012. 4. 2. 02:13

    프로세스와 스레드의 차이점에 대해 설명하겠습니다. 프로세스(Process) : 자기 고유의 자원을 가지고 있음(Code, Data, File) 스레드는(Thread) : 각자의 흐름을 위해 사용됨 (Register, Stack) 프로세스와 스레드를 비유하면 프로세스는 화면 스레드는 실제 화면속에서 명령에 의해 움직이는 유닛 리눅스에서는 프로세스와 스레드를 구분하지 않고 테스크(Task) 라고 합니다. 왜냐하면 프로세스와 스레드는 Task의 자원을 가지고 있습니다. 다 같은 task_struct로 만들어지기 때문입니다. 프로세스는 생성될때마다 각각의 메모리에서 생성되지만 스레드는 부모 프로세스의 가상 메모리를 공유합니다. 프로세스와 스레드가 나눠진 이유는 속도때문입니다. 프로세스간에 태스크 문맥(Task ..

    Read more
  • 10. 프로세스와 스레드 (Process and Thread)

    Category ubuntu_Git on 2012. 3. 27. 02:06

    프로세스(Process)란? - 실행중인 프로그램 (실행의 기본단위) - 커널에서 할당 받은 자신만의 자원을 가진 동적인 프로그램 - 어플리케이션과 사용자 와의 의사소통을 처리 - 여러개의 프로세스를 멀티태스킹 이라고 한다. - 하드디스크에 저장된 프로그램이 실행이 되고 나서 바이너리 파일이 메모리에 적재된 상태 - 단일 스레드 모델 운영체제는 각 프로세스에게 총 4GB의 가상공단을 할당합니다. 리눅스에서는 0~3GB 까지는 사용자 공간이고 나머지 3~4GB는 커널공간입니다. ( 32bt 기준) stack : 지역변수와 인자값과 함수의 리턴 주소등 heap : 동적으로 할당 받은 내용 data : 전역변수 text : CPU가 수행되는 명령어 스레드(Thread)란? - 프로세스의 실행되는 흐름의 단위 ..

    Read more
  • 09. Kernel 의 종류

    Category ubuntu_Git on 2012. 3. 25. 19:29

    커널의 종류 입니다. 커널의 종류 단일형 커널 다양한 서비스와 높은 수준의 하드웨어 추상화를 하나의 덩어리(주소 공간)로 묶은것 운영 체제 개발자 입장에서는 유지 보수가 어렵지만 성능이 좋다. (유닉스, 리눅스, 윈도우 NT 등...) 마이크로 커널 하드웨어 추상화에 대한 간결한 작은 집합을 제공, 더 많은 기능은 서버라고 불리는 응용 소프트웨어를 통해 제공된다. 혼합형 커널 성능 향상을 위한 추가적인 코드를 커널 공간에 넣은 점을 제외하면 많은 부분은 마이크로 커널과 비슷하다. (수정 마이크로 커널이라고도 한다.) 엑소 커널 낮은 수준의 하드웨어 접근을 위한 최소한의 추상화를 제공한다. 전형적으로 엑소커널 시스템에서는 커널이 아닌 라이브러리가 단일형 커널 수준의 추상을 제공한다. 출처 : 위키백과 크게..

    Read more
  • 08. Kernel 이란?

    Category ubuntu_Git on 2012. 3. 18. 02:32

    운영체제에서 가장 중요한 부분입니다. 커널이 하는일은 프로세서와 메모리를 관리, 하드웨어등 입력과 출력을 처리하는 역활을 하고 있습니다. 그림으로 간단하게 설명합니다. 응용프로그램이 실행이 되면 커널에서는 알아서 하드웨어를 제어해 주기 때문에 신경을 안쓰셔도 됩니다. 어때요? 참 쉽죠~? 끝!

    Read more
  • 07. GCC 컴파일 과정

    Category ubuntu_Git on 2012. 3. 14. 02:30

    먼저 gcc란? gcc는 컴파일러 입니다. 컴파일러란? 개발자가 프로그램 언어로 프로그램을 코딩을 하면 -> 컴퓨터가 개발자가 작성한 코드를 해석해야하는데요... 이 과정을 컴파일러라고 합니다. 컴파일러가 개발자가 작성한 코드를 기계어로 바꿔서 컴퓨터에게 알려주는거죠... 컴파일 하는 과정입니다. [ Hello.c 를 컴파일 하기 ] 간단한 예제 코드를 작성하고~이제 컴파일 합니다~ 1단계 전처리 cpp 코드 상단에 시작되는 #으로 시작하는 것을 전처리 부분이라고 합니다. 전처리 부분을 처리하기 위한 과정을 거쳐 파일.i로 임시파일을 생성해줍니다. gcc -E -o ex01.Hello.i ex01.Hello.c 2단계 컴파일 단계 cc1 전처리된 파일.i 를 컴파일하는 과정입니다. 이 과정을 거치게 되면..

    Read more
  • 06. 리눅스란?

    Category ubuntu_Git on 2012. 3. 10. 02:32

    Linux (리눅스)란? OS 운영체제 입니다...ㅡ_ㅡ;; 리눅스는 커널 기반으로 개발/서버로 많이 사용합니다. 장점 : 무료(os, 문서작업 프로그램 등등...), 모든 소스가 공개되어서 사용자 마음데로 수정 가능하다. 전세계 사용자들과 공유 할 수있다. 서버로 많이 사용된다. (안정적, 보안적 이다.) 다양한 GUI가 있다. (GUI : 리눅스 민트, 리눅스 우분투, 페도라 리눅스, 오픈수세, 데비안 리눅스, 아크 리눅스) 단점 : 리눅스 OS 환경에서 제대로 동작되는 프로그램이 없다. (게임, 문서 작업 프로그램등... 윈도우에 맞춰진 환경)

    Read more
  • 05. gcc 옵션

    Category ubuntu_Git on 2012. 2. 21. 02:09

    리눅스에서 많이 사용되는 프로그래밍 언어는 C와 C++ 입니다. 리눅스 자체에서 프로그래밍 언어를 컴파일 해서 실행 가능하도록 즉, 컴파일 가능하게 만들어주는게 gcc 입니다. 터미널에서 gcc --help 를 입력합니다. 그리고 하나 더 있습니다. man gcc 도 입력해봅니다. 전부 영어네요...;; gcc 컴파일 할때 옵션을 주는 것들에 대한 설명입니다. gcc -[옵션] [프로젝트파일] 을 입력하셔야 정상적으로 컴파일 됩니다. gcc 옵션 -v 컴파일되는 과정 보기 -o 컴파일 후 실행파일에 대해서 이름지정 ex) gcc -[옵션] [실행할파일이름] [프로젝트파일] 옵션에 대해서 많이 있는데요 제가 지금 제대로 알고 정리하기에는 아직 어렵네요..;;; 나머지는 이해되면 올리도록 하겠습니다.

    Read more
  • 04. Vim명령어

    Category ubuntu_Git on 2012. 2. 20. 23:21

    Vim명령어 모음 입력 명령어 a 커서에 위치 다음 칸 부터 입력 A 커서에 행의 맨 마지막부터 입력 i 커서에 위치에서 입력 I 커서에 맨 앞에서부터 입력 o 커서에 다음 행에서 입력 O 커서에 이전 행에서 입력 s 커서에 위치한 한 글자를 지우고 입력 cc 커서에 위치의 한 행을 지우고 입력 저장 & 종료 & 불러오기 w 저장 w file.txt file.txt 로 저장 w >> file.txt file.txt 파일에 덧붙여 저장 zz Vim 저장하고 종료 q! Vim 강제로 종료 q Vim 종료 wq! Vim 강제로 저장하고 강제종료 wq Vim 저장하고 종료 e file.txt file.txt 파일 불러오기 e 현재 파일 불러오기 Vim 이전에 작업한 프로젝트로 들어가기 복사 & 붙여넣기& 삭제 ..

    Read more
  • 03. vim - Hello 출력하기

    Category ubuntu_Git on 2012. 2. 20. 02:37

    vim을 이용해서 Hello 출력하는 예제 입니다. ( 언어 : C ) 프로젝트를 만들어줍니다. vim [만들프로젝트이름].[언어] 를 입력합니다. vim ex03.Hello.c 프로젝트 구성이 끝났습니다. 끝났는데...너무 깨끗하네요...;; 왼쪽 라인에 숫자를 넣어주는 명령어를 입력하도록 합니다. [그림 3-1] 화면에서 " : " 입력합니다. 입력하시면 아래 [그림 3-2]와 같은 화면(커멘트 라인)이 나오는데요. 이때 vim number (vim nu) 를 입력합니다. 이제 C언어 코딩을 합니다. 코딩을 하기 위해서 화면에서 키보드 "a 또는 i" 를 입력하시면 입력할수 있는 화면으로 전환이 됩니다. 코딩을 시작합니다. 코드 작성이 끝났으면 키보드 ESC 키 를 입력하시면 커멘트입력 화면이 되는..

    Read more
1 ··· 118 119 120 121 122 123 124 ··· 179