본문 바로가기

반응형

컴퓨터 과학/리눅스 프로그래밍

(6)
[이론]리눅스 드라이버 원리 리눅스에서는 디바이스, 디렉터리, named pipe, 소켓 등 입출력에 필요한 기본 디바이스들이 파일 취급된다. => 파일들을 다루기 위해서는 파일 처리와 관련된 시스템 호출에 대해 알아야 한다!! 다른 이야기이지만 UNIX와 POSIX에 대한 구분은 다음과 같다.UNIX : 벨 연구소에서 개발한 운영체제, 다양한 현대적 컴퓨터 운영체제의 원형, 크게 Unix System V 계열(Solaris 등)과 BSD 계열(NetBSD, FeeBSD)로 구분된다. POSIX : 각기 다른 유닉스 시스템 간의 호환성 및 이식성 확보를 위한 표준 => POSIX 규격을 따르면 UNIX와 연관이 없어도 unix-like 운영체제라 한다. 저준준 입출력 함수는 여기서 참고https://messy-developing-..
[이론]리눅스 프로그래밍 - 네트워크(TCP/IP, UDP) 네트워크에 대한 개론이론적인 부분은 다룬 적이 있어서 다음 글을 참고하기를 바란다.https://messy-developing-diary.tistory.com/168 IT 엔지니어를 위한 네트워크 입문CH 1 : 네트워크 시작하기프로토콜 : 네트워크 상의 통신에 필요한 규약 대표적으로 이더넷-TCP/IP 기반 프로토콜이 있음 물리적 측면 : 데이터 전송 매체, 신호 규약, 회선 규격 등 이더넷에서 널리messy-developing-diary.tistory.com TCP/IP와 UDP 통신에 대해서 보다 실전적인 부분을 다루고자 한다. 주요 주소 체계TCP/IP : MAC 주소(48 bit), IP 주소(IPv4 - 32bit, IPv6 - 128bit), 도메인 네임(서버나 단말을 구분하기 위한 문자열)..
[이론] 스레드(Thread)와 뮤텍스 스레드(Mutex Thread) 정의스레드(Thread) : 프로세스 내에서 실행되는 흐름의 단위를 말한다. 모든 프로그램은 하나 이상의 스레드를 가진다.멀티 프로세스와 다르게 멀티 스레드는 스레드 간 프로세스 내 메모리를 공유할 수 있다는 장점이 있다. => 별도의 IPC가 필요없어서 더 빠르고, 더 간단하다. 단, 여러 스레드 중 어느 스레드가 실행되는 지 알 수 없어서, 스레드 간 동기화가 필요하다. 이를 위한 스레드가 뮤텍스 스레드(Mutex Thread)이다. 뮤텍스 스레드는 임계 영역을 설정하여, 해당 영역에서는 context 스위칭이 일어나지 않도록 방지하는 기능을 포함한다. 스레드의 종류User-Level Thread : 커널 영역 상위 레벨에서 지원되며, 일반 라이브러리로 스레드 생성 및 관리, 동일한 메모리 영역..
[이론] 세마포어(Semaphore) 세마포어는 Edsger Wybe Dikstra가 고안한 두 개의 원자적 함수(=한 번 실행되면 중간에 멈출 수 없는 함수)로 조작되는 두 정적 변수를 의미한다. 공유 자원에 대한 접근을 제한하는 방법으로 사용된다. 식사하는 철학자들 문제(The Dining-Philosophers Problem) : 동시성과 교착 상태를 설명하는 문제 주어진 상황과 같이 5 명의 철학자들 앞에는 5 개의 스파게티가 있고, 스파게티 사이마다 포크가 있다. 철학자들은 서로 대화할 수 없다. 철학자가 스파게티를 먹기 위해서는 양 옆의 포크를 동시에 들어야 한다. 만약 모든 철학자들이 왼쪽 포크를 들고 오른 쪽 포크를 든다면, 모든 철학자들이 오른 쪽 포크를 들 수 없어서 스파게티를 먹지 못하는 교착 상태에 빠질 수 있다. 이러..
[이론]리눅스 프로그래밍 - 프로세스와 쓰레드 프로세스 : 실행 중인 프로그램 생성(new) : 프로세스가 생성됨 준비(ready) : CPU의 할당을 기달기고 있는 상태 실행(execute) : CPU에 할당되어 실행되고 있는 상태, 커널에게 시스템을 수행하게 할 수 있음 대기(sleeping) : 커널에 시스템 호출을 처리하기 위해 기다리는 상태 종료(terminated) : 프로세스 실행이 완료된 상태 PCB(Process Control Block)에 의해 관리된다.프로세스 확인 : ps프로세스 종료 : kill or killall(-9 : SIGKILL)시그널 : 소프트웨어적인 인터럽트, 하드웨어적인 시그널과 다르나 비슷한 면이 있다 signal(), pause()signa..
[이론] 리눅스 프로그래밍 - 입출력 함수 리눅스의 기본 구조와 파일 시스템디바이스, 디렉터리, named pipe, socket 등이 파일로 취급된다.리눅스 시스템은 파일 권한을 이용하여 보안 기능을 제공한다. (user-group-other) 응용 프로그램 - OS[커널(시스템 콜 인터페이스 - 프로세스 관리, 메모리 관리, 파일 시스템, 디바이스 제어(블럭 디바이스, 문자 디바이스, NIC 디바이스), 네트워크)] - 하드웨어(CPU, RAM, NIC etc)단일 유닉스 격을 준수유저 모드와 커널 모드로 동작된다. 시스템 자원에 대한 접근이 필요한 경우 잠시 커널 모드로 전환한 후, 이후 다시 유저 모드로 전환된다. 리눅스 가상 파일 시스템 : 다양한 파일 시스템들을 하나의 파일 시스템처럼 사용할 수 있도록 별도의 레이어를 구성 저수준 파..

반응형