일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- error
- 쉘
- 운영체제
- 턱걸이
- 리눅스
- 공부
- 학습
- 프로그래밍
- Computer Vision
- Windows 10
- 딥러닝
- shell
- 영상처리
- 텐서플로우
- TensorFlow
- C언어
- OpenCV
- 알고리즘
- linux
- Windows10
- 코딩
- C++
- 프로세스
- CV
- 백준알고리즘
- python
- 백준
- 회귀
- 시스템프로그래밍
- c
- Today
- Total
목록프로세스 (8)
줘이리의 인생적기
프로세스 ID - 각 프로세스는 각 pid를 가지며, 최대값은 32768이다. - sudo vi /proc/sys/kernel/pid_max 에서 최대값을 확인할 수 있음. 프로세스 계층 - 최초 프로세스는 init 프로세스 이며 pid는 1이다. - 운영체제가 init프로세스를 생성한다. - 다른 프로세스는 init프로세스를 기반으로 생성된다. - ppid는 부모프로세스의 pid를 뜻한다. 소유자 관리 - 리눅스는 프로세스의 소유자와 그룹을 UID/GID 정수로 관리하며 서로 매핑되어 있다. - sudo vi /etc/passwd 에서 확인할 수 있다. PID 호출 함수 - getpid(), getppid()로 알 수 있다. #include #include #include int main() { pri..
foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용 자가 다른 입력을 하지 못하는 프로세스 background process : 사용자 입력과 상관없이 실행되는 프로세스 이 두개의 차이가 어떤 것인지 알기 위해서는 터미널창에 일반적인 실행방법을 생각해보면 된다. 터미널 창을 하나 켜고 실행파일을 하나 실행 했을 때, 우리는 다른 명령어를 입력하지 못한다. 그것이 foreground process이다. background process를 실행하고 싶을 때는 마지막에 &를 붙이면 된다. 그러면 process는 실행하고 터미널창에 또 다른 명령어가 입력가능한 상태가 된다. 이때 등장하는 [숫자] 숫자 의 의미는 [job number] P..
리눅스는 윈도우와 다르게 전역 네임스페이스를 사용한다. - 윈도우 : C:/windows/... - 리눅스 : /home/사용자이름/... 파일 리눅스의 파일은 inode 고유값과 자료구조에 의해 주요 정보를 관리한다. 프로세스 리눅스의 실행파일 포멧은 ELF(Executable and Liable Format)이다. 시스템콜 호출을 통해 다양한 시스템 리소스 처리를 가능토록 구성되어 있다. 가상 메모리를 지원한다. 각 프로세스는 pid 고유값으로 구분한다. init 프로세스를 기반으로 fork() 시스템콜을 사용해서 신규 프로세스가 생성된다. 권한 운영체제는 사용자와 리소스 권한을 관리하며, 리눅스는 사용자와 그룹으로 권한을 관리한다. root는 슈퍼관리자 파일마다 소유자, 그룹, 소유자와 그룹이 아닌..
페이징 기법과 다른 세그멘테이션 기법에 대해서 알아보겠다. 세그멘테이션 기법은 가상 메모리를 같은 크기의 블록으로 분할하는 페이징 기법과는 다르게 가상 메모리를 서로 크기가 다른 논리적 단위인 세그먼트로 분할하는 기법이다. code segment, data segment, stack segment, extra segment로 나누어 메모리에 접근한다. 세그먼트 가상주소도 페이징 가상 주소와 비슷하다. v = (s, d)로 나타내며, s는 세그먼트 번호, d는 블록 내 세그먼트의 변위를 나타낸다. 세그먼트 페이지를 찾아가서 물리주소를 알아내고 물리 메모리에 있는 해당 세그먼트를 가서 변위만큼 떨어진 데이터에 접근한다. 사진으로 보면 명확한데, segmentation 기법은 외부 단편화 문제가 일어날 수 있..
프로세스들 간의 커뮤니케이션은 매우 중요하다. 하지만 서로의 공간을 쉽게 접근할 수 있다면 매우 위험한일이므로, 프로세스는 다른 프로세스의 공간을 접근할 수 없다. 이 때문에 운영체제는 프로세스간의 통신 방법을 제공한다. 이때, 프로세스간 state 확인 및 데이터 송수신이 필요하며, 통신을 위해 여러 프로세스를 만들어 동시 실행을 하기도 한다. 여기서 기억해야 하는것은 프로세스간 공간은 완전히 분리되어 있다는 점과 커널 공간은 공유한다는 점이다. 커널 공간을 이용하여 통신을 하는 IPC 기법에 대해서 알아보자. IPC기법 중 대표적인 한가지는 pipe(파이프)이다. 기본 파이프는 단방향 통신이며, fork()로 자식 프로세스를 만들고, 부모->자식 방향으로 통신한다. 앞서 말했던 것처럼 메모리는 ker..
프로세스 상태 프로세스 생성(new) : 프로세스를 생성 실행 가능 상태(ready state) : CPU에서 실행 가능 상태(실행 대기 상태) 실행 중(running) : CPU에서 실행 중인 상태 대기 상태(block state) : 특정 이벤트 발생 대기 상태 종료(exit) : 프로세스 종료 상태 선점형 스케쥴러 하나의 프로세스가 다른 프로세스로 교체 가능한 스케쥴러 스케쥴러가 running state인 프로세스를 ready state로 보내고 ready state 프로세스를 running state로 교체 가능하다 비선점형 스케쥴러 하나의 프로세스가 끝날 때까지 다른 프로세스로 교체 불가능한 스케쥴러 프로세스가 자발적으로 block state 혹은 exit 상태일 때만 다른 프로세스로 교체 가능하다
프로세스란? 메모리에 올려져서 실행중인 프로그램을 프로세스라고 한다. 응용 프로그램은 여러개의 프로세스로 이루어졌다. 프로세스 실행을 관리하는 스케쥴러가 있는데 스케쥴러의 알고리즘에 대해 알아보겠다. 1. FIFO 스케쥴링 알고리즘(배치처리시스템) CPU를 처음부터 끝까지 사용하며, 첫번째로 실행되는 프로세스부터 순차적으로 처리하는 알고리즘 2. 최단 작업 우선(Shortest Job First) 스케쥴링 알고리즘 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행시키는 알고리즘 3. 우선순위 기반(priority-based) 스케쥴링 알고리즘 우선순위가 높은 프로세스부터 처리하는 알고리즘 - 정적 우선순위 : 프로세스마다 우선순위를 미리 지정 - 동적 우선순위 : 스케쥴러가 상황에 따라 우선순위를 변..
1. 배치 처리 시스템 batch processing이라고 부르며, 프로그램 실행 요청 순서에 따라 순차적으로 프로그램을 실행하는 방식 완료될 때까지 기다려야 해서 다른 프로그램을 실행하는데 많은 시간을 기다려야 한다. 2. 시분할 시스템 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템 시간 별로 끊어 실행한다. 3. 멀티 태스킹 단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템. 10~20ms 단위로도 실행 응용프로그램이 바뀌어 사용자에게는 동시 실행처럼 보임. 4. 멀티 프로세싱 여러 CPU에 하나의 프로그램을 병렬로 실행시키는 시스템 5. 멀티프로그래밍 응용 프로그램은 CPU를 온전히 쓰기보다, 다른 작업을 중간에 필요로 하는 경우가 많다. 최대한 CP..