프로세스와 프로그램의 차이는?
프로그램은 보조 기억장치에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 묶음이다.
프로그램의 명령어와 정적 데이터가 메모리에 적재되면 프로세스가 된다.
즉, 메모리에 적재된 프로그램은 프로세스가 되고, 아니면 그저 프로그램이다.
 
어떻게 여러 개의 프로세스가 동시에 실행될까?
하나의 CPU(프로세서)는 한 순간에 하나의 프로세스만 실행할 수 있다.
다만, 운영체제가 엄청난 속도로 CPU가 실행할 프로세스를 교체하고 있기 때문에
동시에 실행하는 것처럼 보일 뿐이다.
 
프로세스는 어떻게 구성되어 있을까?
프로세스에 대한 정보는 PCB(Process Control Block)라는 자료구조에 저장된다.
PCB는 다음과 같은 정보를 담고 있다.
  • PID(Process IDentification)
    • 운영체제가 각 프로세스를 식별하기 위해 부여된 프로세스 식별번호이다.
  • 프로세스 상태
    • CPU는 프로세스를 빠르게 교체하면서 실행하기 때문에 실행 중인 프로세스, 대기 중인 프로세스 등 상태를 저장한다.
  • 프로그램 카운터
    • CPU가 다음으로 실행할 명령어를 가리키는 값이다.
    • CPU는 기계어를 한 단위씩 읽어서 처리한다.
    • 프로세스를 실행하기 위해 다음으로 실행할 기계어가 저장된 메모리 주소를 가리키는 값이다.
  • 스케줄링 우선순위
    • 운영체제에서 여러 개의 프로세스가 CPU에서 실행될 순서를 결정하는 것을 스케줄링이라고 한다.
    • 이 스케줄링에서 우선순위가 높으면 먼저 실행될 수 있는데, 이를 스케줄링 우선순위라고 한다.
  • 권한
    • 프로세스가 접근할 수 있는 자원을 결정하는 정보이다.
    • 프로세스마다 어디까지 접근할 수 있는지에 대한 권한이 필요하다.
  • 프로세스의 부모와 자식 프로세스
    • 최초 생성되는 init 프로세스를 제외한 모든 프로세스는 부모 프로세스를 복제해서 생성되고 이 계층관계는 트리를 형성한다.
    • 그래서 각 프로세스는 자식과 부모 프로세스에 대한 정보를 가지고 있다.
  • 프로세스의 데이터와 명령어가 있는 메모리 위치를 가리키는 포인터
    • 프로세스는 실행중인 프로그램이기 때문에 프로그램에 대한 정보를 가지고 있어야 한다.
    • 이 정보는 프로세스가 메모리에 가지는 자신만의 주소 공간에 저장된다.
    • PCB는 이 공간에 대한 포인터 값을 가진다.
  • 프로세스에 할당된 자원들을 가리키는 포인터
  • 실행문맥
    • 프로세스가 실행 상태에서 마지막으로 실행한 프로세서의 레지스터 내용을 담고 있다.
    • CPU에 의해 실행되는 프로세스는 운영체제에 의해 계속 교체된다.
    • 교체되었다가 다시 자신의 차례가 되었을 때 중단된 적 없이 연속적으로 실행된 것처럼 하기 위해 이 레지스터 정보를 보유한다.
 
프로세스가 접근할 수 있는 메모리 공간은?
PCB의 구성 요소 중 [프로세스의 데이터와 명령어가 있는 메모리]의 구성
이 주소 공간은 Text, Data, BSS, Heap, Stack 영역으로 구성된다.

스택 영역과 힙 영역 사이의 빈 공간은 컴파일 타임에 지역변수를 얼마나 사용할지 미리 계산할 수 없기 때문에 비워 두었으며,
런타임에 지역변수 선언 순서에 따라 스택 영역은 위쪽으로 주소값을 매기고 동적 할당될 때 힙 영역은 아래쪽으로 주소값을 매긴다.
 
프로세스는 어떻게 관리될까?
운영체제는 프로세스들의 실행 사이에 프로세스를 교체하고 재시작할 때 오류가 발생하지 않도록 관리해야 한다.
이를 위해 운영체제는 프로세스의 상태를 실행(running), 준비(ready), 블록(block) 상태로 분류하고 프로세스들을 상태전이(state transition)를 통해 체계적으로 관리한다.

  1. 사용자가 프로그램을 실행하면 프로세스가 생성되고 준비리스트에 추가된다.
  2. 프로세스는 프로세서(CPU)가 사용가능한 상태가 되면 CPU를 할당받는다. (디스패칭: 준비에서 실행상태로 전이, 디스패처가 수행)
  3. 프로세스는 실행상태에서 CPU를 이용해 연산한 후, CPU를 자발적으로 반납하고 작업이 끝나지 않았으면 다시 준비상태에 들어간다.
  4. 운영체제는 다시 준비리스트의 첫 번째에 있는 프로세스를 실행상태로 바꾸고 1~3을 반복한다.
  5. 프로세스를 다시 사용하기 전에 입출력이 완료대기를 기다려야 하는 상황이라면 완료될때까지 자신을 블록한다.
  6. 입출력이 완료되면 운영체제가 프로세스를 블록상태에서 준비상태로 다시 전이시킨다.
 
운영체제는 프로세스가 CPU를 자발적으로 반납하지 않고 독점하는 경우를 방지하기 위해 하드웨어적으로 인터럽팅 클록을 주기적으로 발생시켜
프로세스가 특정 시간 간격동안만 실행할 수 있도록 한다.
인터럽팅 클록이 발생되면 강제로 실행중인 프로세스의 CPU 제어권을 운영체제에 빼앗기고 프로세스는 준비상태로 전이된다.
많은 운영체제는 일시정지 상태를 추가로 정의한다.
이 상태 덕분에 편리하게 디버깅을 할 수 있다.

 

출처 : bowbowbow.tistory.com/16

 

[운영체제] 프로세스가 뭐지?

[운영체제] 프로세스가 뭐지? 목차 [운영체제] 프로세스가 뭐지? 개요 프로세스란 단어를 본적있나요? 프로세스란? 프로그램과 뭐가 다르지? 어떻게 여러 개의 프로세스가 동시에 실행될 수 있을

bowbowbow.tistory.com

 

반응형

정의

데이터를 송수신하기 위한 전송로를 1~2개 사용하여 데이터를 1비트씩 순차적으로 송수신하는 통신 방식이다.

특징

병렬(Parallel) 통신에 비해 적은 신호선으로 연결하기 때문에, 선재(線材)와 중계 장치의 비용이 적게 든다.

 

직렬 통신 규격

RS-232C 케이블

- PC에 표준으로 탑재되는 등 가장 널리 사용되는 규격이다.

- D-SUB 25핀 또는 9핀이 있다.

- IBM 호환 PC에서 쓰인다.

- 엔지니어들은 컴퓨터를 센서 또는 모뎀에 연결하거나 계측기와의 통신 등의 용도로 사용한다.

- PC 시리얼 포트와 디바이스간 Point to Point 연결로만 사용한다.

 

출처 : mc-t.co.kr/?mod=document&uid=390&page_id=75

 

시리얼 통신이란? RS232, RS422, RS485

시리얼통신이란? 데이터를 송수신하기 위한 전송로를 1개또는2개 사용하여 데이터를 1비트씩순차적으로 송수신 하는 통신방식입니다. 적은 신호선으로 연결이 가능하기 때문에, 선재(線材)와

mc-t.co.kr

 

반응형

'■ 웹 개발 > 네트워크' 카테고리의 다른 글

네트워크 개요  (0) 2021.04.13
VPN이란?  (0) 2020.12.09
소켓(Socket) 통신이란?  (0) 2020.12.08
포트(Port)란?  (1) 2020.12.08

정의

소켓은 프로세스가 네트워크를 통해 데이터를 송수신할 수 있도록 하는 창구이며,

떨어져 있는 두 호스트를 연결해주는 인터페이스의 역할을 한다.

역할에 따라 서버 소켓, 클라이언트 소켓으로 구분된다.

 

소켓 통신의 흐름

- 서버 소켓

1) socket() : 클라이언트와 서버를 연결할 연결용 소켓을 생성한다.

2) bind() : IP와 Port 번호를 결합한다.

3) listen() : 클라이언트의 접근 요청을 수신하는 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정한다.

               클라이언트가 connect() 해오기 전까지 대기하기 때문에 listen()은 별도 스레드를 만들어서 처리한다고 한다.

4) accept() : 새로운 소켓을 만들어 클라이언트와 실질적인 연결을 수행한다.

 

- 클라이언트 소켓

1) socket() : 소켓을 생성한다.

2) connect() : 통신할 서버에 설정된 ip와 port 번호에 통신을 시도한다.

3) 통신 시도 시, 서버가 accept() 함수로 클라이언트의 socket descriptor를 반환한다.

4) 이를 통해 클라이언트와 서버는 서로 send(), recv()하며 데이터를 송수신한다.

 

소켓 종류

1) 스트림 소켓(TCP)

- 양방향으로 바이트 스트림을 전송하며, 연결 지향성을 띤다.

- 오류수정, 전송처리, 흐름제어를 보장한다.

- 송신된 순서에 따라 중복되지 않게 데이터를 수신한다.

- TCP를 사용하여 소량의 데이터보다 대량의 데이터 전송에 적합하다.

 

2) 데이터그램 소켓(UDP

- 비연결형 소켓이다.

- 데이터의 크기에 제한이 있다.

- 전달이 확실하게 보장되지 않고, 데이터가 손실되어도 오류가 발생하지 않는다.

- 실시간 멀티미디어 정보를 처리하기 위해 주로 사용한다.

ex) 전화

 

소켓 통신의 특징

- 서버와 클라이언트가 특정 포트를 통해 실시간으로 양방향 통신을 하는 방식이다.

- 연결은 close()하기 전까지 유지된다.

- 실시간 데이터 송수신에 적합하다.

- 실시간 동영상 스트리밍이나 온라인 게임에 자주 사용된다.

 

출처 : helloworld-88.tistory.com/215#:~:text=SOCKET%20%ED%86%B5%EC%8B%A0%EC%9D%98%20%ED%8A%B9%EC%A7%95,%EA%B2%BD%EC%9A%B0%EC%97%90%20%EC%9E%90%EC%A3%BC%20%EC%82%AC%EC%9A%A9%EB%90%9C%EB%8B%A4.

 

[기본] 소켓(SOCKET)통신 이란?

소켓통신 소켓(SOCKET)이란? 소켓(Socket)은 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데

helloworld-88.tistory.com

 

반응형

'■ 웹 개발 > 네트워크' 카테고리의 다른 글

네트워크 개요  (0) 2021.04.13
VPN이란?  (0) 2020.12.09
직렬(Serial) 통신이란?  (0) 2020.12.08
포트(Port)란?  (1) 2020.12.08

정의

직역하면 '항구'라는 뜻으로, 컴퓨터 관련 분야의 의미로는 운영 체제 통신의 종단점을 뜻한다.

 

- 하드웨어 : 컴퓨터의 주변 장치와 연결하기 위한 연결단 (물리적 통로)

- 소프트웨어 : 네트워크 서비스나 특정 프로세스를 식별하는 논리적 단위 (논리적 통로)

 

소프트웨어적 의미

데이터 송수신시,

Datalink 계층에서는 호스트의 NIC*로 MAC Address를 판별하고,

Network 계층에서는 IP Address로 목적지를 판별한다.

Mac Address와 IP Address를 통해 목적지 호스트까지 도달한 후에는 어떤 프로세스에서 데이터를 받을 것인지를 알아야 하는데 이 때 쓰이는 것이 포트 번호이다.

* NIC(Network Interface Card) : 이더넷 카드 및 네트워크 어댑터라고도 하며, 응용프로그램에서 받은 데이터를 네트워크 형식에 맞게 변환하여 전송해 주는 기능을 하는 하드웨어 장치이다.

포트의 정확한 개념

- OSI 7 계층의 전송 계층에서 동작하는 TCP / UDP에서 Application이 상호구분을 위해 사용하는 번호이다.

- IP 내에서 프로세스 구분을 위해 사용하며, 각 프로토콜의 데이터가 컴퓨터 내부의 논리적 통로를 따라 흐른다.

- 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값.

 

포트 번호

- Port Number는 16bits로 이루어져 있다.

- 2의 16승이므로 총 65536개의 번호가 존재할 수 있다.

- 번호는 크게 3가지로 분류한다.

1) Well-known Ports ( 잘 알려진 포트 ) : 0번 ~ 1023번

2) Registered Ports ( 등록된 포트 ) : 1024번 ~ 49151번

3) Dynamic Ports ( 동적 포트 ) : 49152번 ~ 65535번

- 사용자가 임의로 사용 가능한 포트 번호이다.

 

포트 번호 표기법

- 일반적으로 IP Address 뒤에 콜론 ( : )을 붙여 표기한다.

ex) 192.168.100.1:3053

 

포트 포워딩 ( Port Forwarding )

외부에서 공유기 내의 특정 장치로 접속하기 위해서는 IP Address를 알아야 하지만,

공유기 내부의 IP는 사설(Private) IP로 이루어져 있어 외부에서 IP만으로는 특정 PC를 지정할 수 없다.

따라서 공유기의 공인(public) IP로 접속한 후 특정한 PC로 연결되도록 포트 넘버를 공유기에서 정의해주는 작업이 필요하며, 이러한 과정을 포트 포워딩이라고 한다.

 

출처 :

bmind305.tistory.com/25

 

Port 란?

 Port ( 포트 ) 본래의 의미로 직역하면 '항구'라는 뜻으로, 컴퓨터 관련 분야에서의 의미로는 운영 체제 통신에서의 종단점을 뜻한다. 하드웨어적 의미 : 컴퓨터의 주변 장치와 연결하기 위한 연

bmind305.tistory.com

velog.io/@xldksps4/OSI-7%EA%B3%84%EC%B8%B5

 

OSI 7계층

OSI7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.통신이 일어나는 과정을 단계별로 파악하기 위함.7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨

velog.io

 

반응형

'■ 웹 개발 > 네트워크' 카테고리의 다른 글

네트워크 개요  (0) 2021.04.13
VPN이란?  (0) 2020.12.09
직렬(Serial) 통신이란?  (0) 2020.12.08
소켓(Socket) 통신이란?  (0) 2020.12.08

1. fstab란?

파일 시스템 정보를 저장하고 있으며, 리눅스 부팅시 마운트 정보를 저장하고 있다.

이 파일 안의 구성값들을 통해 부팅시 자동으로 적용될 수 있도록 한다.

 

2. 설정하는 정보

- 해당 파일 시스템의 장치명(Device name)

- 마운트포인트

- 파일시스템 타입

- 파일시스템 마운트시 Read Only 여부

- 파일시스템 마운트시 Read, Write 여부

- Quota 정책 적용 여부

- 일반 사용자의 마운트 허용 여부

- 부팅시 자동 마운트 여부

- SetUID, SetGID 설정 허용 여부

- dump 가능 여부

- fsck로 파일시스템 검사 시, 검사 순서

 

3. /etc/fstab 파일의 각 필드별 역할

- 파일 시스템 장치명

파일 시스템의 장치명을 다음과 같이 설정한다.

ex) '/dev/sda1', '/dev/sda2', 'LABEL=/', 'LABEL=/boot' 등

 

- 마운트 포인트

파일 시스템이 마운트될 디렉토리를 설정한다.

 

- 파일 시스템 종류

현재 시스템에서 지원 가능한 파일 시스템을 확인하려면 /proc/filesystems 파일을 확인하면 된다.

파일 시스템의 종류에는 다음과 같은 종류 등이 있다.

> ext : 초기 리눅스에서 사용되었던 fs-type으로 현재 사용하지 않는다.

> ext2 : 현재도 사용되고 있는 fs-type으로서 긴 파일명을 지원하는 것이 특징이다.

> ext3 : 저널링 파일 시스템으로서 ext2에 비해 파일시스템 복구 기능과 보안 부분을 크게 향상시킨 것이다.

> ext4 : 리눅스 표준 파일 시스템으로 용량 증대, 삭제 파일 복구 기능 추가, 파일 시스템 점검 속도 향상이 특징이다.

> iso9660 : DVD 또는 CD-ROM을 마운트할 때 사용하는 fs-type으로 Read-Only이다.

> nfs : Network File System으로 원격 서버를 마운트할 때나 분산 시스템 구현에 사용된다.

> swap : swap 메모리를 사용하는 파일 시스템에서 사용한다.

> ufs : Unix File System으로 UNIX SYSTEM 5계열에서의 fs-type이다.

> vfat : 윈도우 95, 98 그리고 NT를 지원하기 위한 fs-type

> msdos : MS-DOS 파티션을 사용하기 위한 fs-type

> nffs : 윈도우 NT나 2000의 NTFS 파일 시스템을 사용하기 위한 fs-type

> hfs : Mac 컴퓨터의 hfs 파일 시스템을 지원하기 위한 fs-type

> ramdisk : RAM 디스크를 지원하는 fs-type

 

- 옵션

파일 시스템을 용도에 맞게 사용하기 위한 파일 시스템 속성을 설정한다.

> defaults : rw, nouser, auto, exec, suid 속성을 모두 가지는 속성으로, 일반적인 파일 시스템에서 사용된다.

> auto : 부팅시 자동 마운트 된다.

> noauto : 부팅시 자동 마운트 되지 않게 한다.

> exec : 실행 파일이 실행을 허용한다.

> noexec :  실행 파일의 실행을 금지한다.

> suid : SetUID와 SetGID의 사용을 허용한다.

> nosuid : SetUID와 SetGID의 사용을 금지한다.

> ro : 읽기 전용으로 마운트한다.

> rw : 읽기, 쓰기 모두 가능하도록 마운트한다.

> user : 일반 계정 사용자들도 마운트 할 수 있게 한다.

> nouser : 일반 계정 사용자들은 마운트 할 수 없게 한다.

> usrquota : 개별 계정 사용자의 Quota 설정을 가능하도록 한다.

> grpquota : 그룹별 Quota 설정을 가능하도록 한다.

 

- dump 관련 설정

0, 1을 지정할 수 있다.

> 0 : dump 명령으로 덤프되지 않는 파일 시스템

> 1 : 데이터 백업 등을 위해 dump가 가능한 파일 시스템

 

- 파일 점검 옵션

0, 1, 2를 지정할 수 있다.

> 0 : 부팅시 실행되는 fsck가 실행되지 않는 설명

> 1 : 루트 파일 시스템을 의미한다.

> 2 : 루트 파일 시스템 이외의 파일 시스템을 의미한다.

 

출처 : blog.naver.com/PostView.nhn?blogId=dudwo567890&logNo=130156449983

 

Linux, 파일시스템테이블(/etc/fstab)

"/etc/fstab"파일은 리눅스에서 사용하는 파일시스템 정보를 정적으로 저장하고 있는 파일이며, 리눅스의 ...

blog.naver.com

 

반응형

'■ 운영체제 > 리눅스' 카테고리의 다른 글

USB-HDD 접속시 자동 마운트 방법  (0) 2020.12.03
파티션이란?  (0) 2020.12.03

Linux에서 USB-HDD를 사용하는 경우, 항상 정해진 디렉토리에 마운트를 할 때가 있다.

이런 경우, /etc/fstab을 UUID지정으로 설정하고 udev의 설정과 조합하여 USB-HDD접속시 자동으로 소정의 디렉토리에 마운트할 수 있다.

 

1. UUID 조사

- UUID란?

Universally Unique IDentifier의 약자로, 네트워크 상에서 고유성이 보장되는 ID를 만들기 위한 표준 규약이다.

128비트의 숫자이며, 32자리의 16진수로 표현된다. 8-4-4-4-12 글자마다 하이픈을 집어넣어 5개의 그룹으로 구분한다.

커맨드
ls -l /dev/disk/by-uuid/

결과
lrwxrwxrwx 1 root root 10 Jun 16 20:50 569785b6-7c3b-4bf0-b6ae-ce8a746c0a38 -> ../../sda1

UUID : 569785b6-7c3b-4bf0-b6ae-ce8a746c0a38
파티션 : /dev/sda1

2. fstab 설정

/etc/fstab에 1번에서 조사한 UUID의 파티션이 적당한 디렉토리에 마운트되도록 한다.

udev에서 mount 커맨드를 실행하여 마운트를 하기 때문에 noauto를 지정한다.

/etc/fstab 파일에 아래를 기재한다.
UUID=569785b6-7c3b-4bf0-b6ae-ce8a746c0a38 /mnt ext3 rw,noauto 0 0

3. udev 설정

USB-HDD 접속 시, 자동적으로 mount 커맨드를 실행하도록 설정한다.

udev는 /etc/udev/rules.d 이하의 설정을 읽어들이므로, 이곳에 적당한 이름의 룰을 설정한다.

ex) /etc/udev/rules.d/80-usbhdd.rules

ACTION=="add", ENV{DEVTYOE}=="partition", ENV{ID_FS_UUID}=="569785b6-7c3b-4bf0-b6ae-ce8a746c0a38" RUN+="/bin/mount -U $env{ID_FS_UUID}"

위 룰은 ID_FS_UUID에서 지정한 UUID의 파티션이 인식되었을 때 mount-U 커맨드를 자동으로 실행하여 HDD를 마운트한다.

 

출처 :

www.huskyhoochu.com/what-is-uuid/

 

[TIL] UUID란?

범용고유식별자 UUID에 대해 알아봅시다

www.huskyhoochu.com

www.xmisao.com/2013/07/17/usb-hdd-mount.html

 

LinuxでUSB-HDDを接続時に所定のディレクトリへ自動マウントする方法 -- ぺけみさお

 

www.xmisao.com

 

반응형

'■ 운영체제 > 리눅스' 카테고리의 다른 글

fstab이란?  (0) 2020.12.03
파티션이란?  (0) 2020.12.03

+ Recent posts