CS기초
-
운영체제 6: 프로세스 간 커뮤니케이션 - 가상 메모리와 IPC에 대해CS기초/OS,HW 2021. 12. 30. 02:12
프로세스는 프로그램이 실행된 상태인데, 앞서 설명했던 대로 한 프로그램은 여러 프로세스로 나누어질 수 있다. 그리고 기본적으로 각 프로세스는 독립적인 코드와 데이터 공간을 사용하며 다른 프로세스가 데이터 및 코드를 변경할 수 있는 가능성을 제한하기 위해 서로 직접적으로 통신(코드 및 데이터 영역에 접근)할 수 없다. 하지만 여러 CPU 코어를 사용하여 한 가지 작업을 하기 위해 프로세스를 나눌 때 등의 경우 프로세스 간 커뮤니케이션이 필요하다. 이를 도와주는 것이 IPC(InterProcess Communication)기술이다. (하나의 작업을 수행하기 위해 여러 프로세스를 사용하는 경우의 대표적인 예로 리눅스의 fork() 시스템 콜을 들 수 있다. fork() 함수는 프로세스를 복사해서 새로운 프로세..
-
운영체제 5: 컨텍스트 스위칭 (Context Switching)CS기초/OS,HW 2021. 12. 28. 01:21
컨텍스트 스위칭이란 여러개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것. 즉, CPU에 실행할 프로세스를 교체하는 기술이다. PCB 컨텍스트 스위칭은 PCB(Process Context/Control Block)이라고 하는 메모리의 별도 공간에 process 상태값들을 저장하고, 해당 값들을 찾는 방법으로 구현된다. PCB는 프로세스가 실행중인 상태를 스냅샷 찍어 저장하는 공간이라고 생각하면 된다. PCB에 저장되는 내용은 다음과 같다. Process ID (PID) 레지스터 값 (PC, SP 등) Scheduling info (프로세스 상태) Meomory info (메모리 사이즈 linit) - 전체 프로세스 사이즈 등 기타 리눅스의 PCB는 C 구조..
-
운영체제 4: 프로세스 (Process)의 구조CS기초/OS,HW 2021. 12. 28. 00:31
프로세스의 구조 text: 컴파일 된 코드 저장 data: 전역 변수 또는 초기화된 데이터 저장 bss: 초기값이 없는 변수 저장 stack: 함수 호출로 생성된 데이터, 로컬 변수 등 임시 데이터 저장 heap: 코드에서 동적으로 만들어지는 데이터 저장 Stack & Heap stack과 heap은 자료구조이다. Heap은 동적으로 메모리를 할당하는데, 사실 파이썬은 알아서 메모리를 관리하기 때문에 파이썬 이용자들에게는 어떤 의미인지 잘 안 와닿을 수 있다. C언어의 경우 사용자가 메모리를 직접 관리하는데, C에서 사용하는 malloc, free 함수가 동적 메모리 할당 및 해제에 관련된 함수다. 예를들어, C에서 다음과 같은 코드를 사용했을 때 int main() { int *data; data = ..
-
운영체제 3: 인터럽트 (Interrupt)CS기초/OS,HW 2021. 12. 28. 00:25
인터럽트란? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황 처리가 필요할 경우에 CPU에 알려서 처리하는 기술. 쉽게 말해서 CPU가 다른 장치와 커뮤니케이션을 할 수 있도록 하는 기술이다. 예를 들어 파일을 읽는 작업을 위해 blocking 상태로 빠진 프로세스가 있었다면, 파일을 다 읽었다는 메세지를 CPU에 전달함으로써 해당 프로세가 ready 상태로 전환되었음을 알리는 것이다. 또는 선점형 스케줄러에서 프로세스를 running상태에서 ready상태로 바꾸기 위해서도 이 기술이 이용된다. CPU가 프로그램을 실행하는 도중 입출력 하드웨어 등 CPU외의 장치에서 예외(e.g. 0으로 3을 나눠라), 이슈 발생 또는 파일 처리가 끝남 → 해당 장치에서 운영체제에 이슈를 알..
-
운영체제 2: 프로세스 스케줄링 시스템의 종류와 알고리즘CS기초/OS,HW 2021. 12. 28. 00:20
스케줄링 시스템 운영체제는 CPU를 효율적으로 사용하기 위해 프로세스 스케줄링을 수행하며, 스케줄링 시스템은 여러가지가 있는데 배치(batch) 처리 시스템, 시분할 시스템, 멀티 태스킹, 멀티 프로세싱, 멀티 프로그래밍으로 나눌 수 있다. 사실 실제로는 시분할 시스템, 멀티 프로그래밍, 멀티 태스킹은 유사한 의미로 통용된다. 중요한 점은 이 세 가지 시스템 모두 CPU 활용도를 높여서 여러 프로그램이 짧은 시간안에 처리될 수 있도록 하기 위해 사용한다는 것이다. 배치 처리 시스템 자료 구조 중 큐(Queue)와 같은 방법으로(선입선출 = FIFO) 첫 번째 응용 프로그램의 작업이 끝나면 바로 이어서 다음 응용 프로그램이 자동으로 실행 될 수 있도록 하는 방법이다. 배치 처리 시스템은 여러 한계가 있고,..
-
운영체제 1: 컴퓨터의 구조와 운영체제의 역할과 구조CS기초/OS,HW 2021. 12. 8. 20:51
컴퓨터의 구조 폰 노이만 구조 컴퓨터 아키텍처로 1940년대 이후 지금까지 만들어진 거의 모든 컴퓨터가 이를 기반으로 한다. 폰 노이만 구조는 중앙처리장치(CPU), 메모리, 프로그램 세 가지 요소로 구성되어있다. CPU와 메모리는 서로 분리되어 있으며 둘을 연결하는 Bus를 통해 명령어 읽기, 데이터 읽기 및 쓰기를 처리한다. 이 전의 컴퓨터는(애니악 - ENIAC)은 새 입력을 넣을 때마다 손으로 직접 진공관 회로 스위치를 다시 조정해야하는 방식이었기 때문에, 폰 노이만 구조는 내장 방식 컴퓨터라는 점에서 의의가 있다. 예를 들면, 이전 컴퓨터는 1+1, 3-2 라는 두 가지의 명령을 수행하려면 하드웨어의 전선을 직접 1, 더하기, 1, 3, 빼기, 2를 의미하는 것으로 매번 바꿔 끼워 입력해야 했지..
-
IP주소와 포트포워딩이란, 포트포워딩 설정하기(iptime)CS기초/Network 2021. 10. 26. 23:26
로컬 젠킨스와 Github webhook 연결을 하려다보니 IP주소가 필요했다. IP주소란 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호(ref. Wiki)라고 되어있는데 쉽게 말하면 통신을 위한 장치의 주소같은 개념이다. 우리가 편지를 보내기 위해서는 수신자의 주소를 적어야하는 것 처럼 Webhook이 내 컴퓨터의 젠킨스로 정보를 보내기 위해서는 내 컴퓨터가 어디에 있는지 알아야하니 컴퓨터의 ip주소가 필요한 것이다. 인터넷에서 특정 사이트로 접속할 때 - 이 동작도 접속해달라는 post요청을 보내게 되는데 - http://www.google.com 과 같은 주소를 입력하는데 이것도 사실 이 주소기 DNS 서버라는 것을 통해 IP주소로 바뀌어서 전달된다. 즉, h..
-
[CS기초] 프롬프트의 종류, 쉘 환경변수에 대해CS기초/OS,HW 2021. 8. 20. 16:48
Prompt 프롬프트란 컴퓨터가 입력을 받아들일 준비가 되어 기다리고 있다는 것을 알려주는 메세지다. 리눅스 터미널에서는 $또는 #로 표시된다. $ : 일반 사용자로 접속했음을 의미한다 #: 관리자로 접속했음을 의미한다 %: C shell에서는 프롬프트가 %로 표시된다. 환경변수 변수란 값을 담고있는 상자같은 의미로 생각하면 된다. 너무 길거나 복잡한 행위를 반복적으로 수행해야할 때 해당 값을 변수에 담음으로써 빠르게 실행할 수 있다. Shell script에서 사용하는 변수는 모두 문자로 인식된다. 그래서 문자 사이에 공백이 없으면 굳이 쌍따옴표로 감싸주지 않아도 되며 숫자를 넣어도 문자로 인식한다. 변수의 종류에는 전역변수, 지역변수, 예약변수, 위치 매개변수, 특수 매개변수, 환경변수 등이 있다. ..