CS 26

[운영체제] 프로세스와 스레드(PCB, 컨텍스트 스위칭, 멀티 프로세스, 멀티 스레드)

프로세스와 스레드 1.프로세스란? 실행 중인 프로그램 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 프로세스가 됨 포그라운드 프로세스: 사용자가 보는 앞에서 실행하는 프로세스 백그라운드 프로세스: 사용자가 보지 못하는 뒤편에서 실행되는 프로세스 사용자와 상호작용하지 않는 백그라운드 프로세스: 데몬(유닉스), 서비스(윈도우) 프로그램은 하드디스크 등의 보조기억장치에 저장된 실행 코드이고, 프로세스는 프로그램을 실행시켜 프로그램이 메모리 상에서 실행하는 작업 단위이다. 프로세스 제어 블록(PCB) 프로세스와 관련된 정보를 저장하는 자료구조로, 특정 프로세스를 식별하고 처리하는데 필요한 정보를 판단한다. 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기된다. 커널 영역에 생성된다. PCB에 ..

CS/운영체제 2022.09.29

[운영체제] 운영체제란?(커널, 이중모드, 시스템콜)

운영체제란? 프로그램 실행에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 올바르게 실행되도록 도움 실행할 프로그램을 메모리에 적재하고 삭제하며 지속적으로 메모리 자원을 관리 여러 프로그램에 CPU 자원을 공정하게 할당 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원 할당, 올바르게 실행되도록 관리 관리할 자원별로 기능이 나눠져 있다. (메모리 관리, CPU관리, 디스크 관리...) 운영체제 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없음 운영체제를 통해 하드웨어와 프로그램을 더 깊이 이해할 수 있음 운영체제의 핵심 서비스 프로세스 관리 자원..

CS/운영체제 2022.09.29

[컴퓨터 구조] 명령어란?

명령어 1. 소스코드와 명령어 고급 언어: 대부분의 프로그래밍 언어. 사람을 위한 언어. 컴퓨터가 이해할 수 없음 저급 언어: 컴퓨터가 직접 이해하고 실행할 수 있는 언어. 명령어로 이루어져 있음 고급 언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어(명령어)로 변환 되어야 한다. 저급 언어는 두가지 종류가 있다. 기계어: 0과 1로 이루어진 명령어로 구성된 저급 언어 어셈블리어: 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어 고급 언어 -> 저급 언어 변환 개발자들이 고급 언어로 작성한 소스 코드는 결국 저급 언어로 변환되어 실행된다. 그 방식은 크게 두가지 방식으로 나눌 수 있다. 컴파일 방식 컴파일 언어: 컴파일 방식으로 작동하는 고급 언어 컴파일: 컴파일 언어로 작성된 소스..

CS/컴퓨터구조 2022.09.07

[컴퓨터 구조] 0과 1로 데이터를 표현하는 방법

1. 0과 1로 숫자를 표현하는 방법 컴퓨터는 0또는 1밖에 이해하지 못한다. 0과 1을 나타내는 가장 작은 정보 단위는 비트이다. n비트는 2^n가지 정보를 표현할 수 있다. 모든 프로그램은 수백만개 이상의 비트로 이루어져있고, 이를 편리하게 표현하기 위해 더 큰 단위를 사용한다. 1byte = 8bit 1KB = 1000byte 1MB = 1000KB 1GB = 1000MB 1TB = 1000GB 이진법 : 0과 1만으로 모든 숫자를 표현하는 방식. 1을 넘어가는 시점에 자리 올림을 한다. 음수는 2의 보수로 표현한다. 십육진법: 15를 넘어가는 시점에 자리 올림하여 수를 표현한다. 2. 0과 1로 문자를 표현하는 방법 문자 집합: 컴퓨터가 인식하고 표현할 수 있는 문자의 모음 문자 인코딩: 문자집합..

CS/컴퓨터구조 2022.09.06

[네트워크] soket API의 흐름

소켓이란, TCP/UDP IP 환경에서 통신을 위한 통로이다. 소켓 주소는 IP+Port 번호로 구성되어있다. 데이터 통신은 TCP 통신과 UDP 통신이 있다. TCP 통신은 연결형으로, 데이터 교환 전에 연결 설정을 하고 교환 후에 연결을 해제한다 UDP 통신은 비연결형으로, 연결이 필요없이 데이터 교환이 이루어진다. TCP 통신에서의 Socket API 흐름을 살펴보겠다. 연결 설정 1. sd = socket() 서버 측에서 소켓을 생성한다. 2. bind(sd) 서버가 사용할 IP 주소와 포트 번호를 생성한 소켓에 결합(bind)시킨다. 3. listen(sd) 서버는 클라이언트로부터 연결 요청이 수신되는지 주시(listen)한다. 4. client_fd = accept(sd, addr, ..) 요..

CS/네트워크 2021.09.18

[네트워크] TCP/IP 공유기 사용 환경, NAT

공인 IP / 사설 IP IP에는 공인IP와 사설 IP가 있다. 공인 IP는 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이다. 전세계 유일한 고유 IP주소이며 외부 망에서 직접 연결 가능한 주소이다. 사설 IP(비공인 IP)는 공인 IP 부족으로 나온 방안으로, 하나의 공인 IP를 다수의 사설 IP들이 공유한다. Pv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC 나 장치에 할당된다. 공유기 사용 환경 kt, skt, LG 와 같은 곳들을 ISP(Internet Service Provider)라고 한다. 공유기의 주소는 두가지로 나뉘는데, 한가지는 공인 IP로 외부로부터 데이터를 주고받는 IP이다. ISP로부터 ..

CS/네트워크 2021.09.14