CS 28

[운영체제] 4. 프로세스 스케줄링

다중프로그래밍(multi programming)시스템 내에는 여러개의 프로세스가 존재하므로 자원을 나누어서 사용해야 하고, 따라서 자원을 할당할 프로세스를 선택하는 "스케줄링"이 필요하다. 자원 관리에서는 아래 두 가지 개념을 다룬다.1. 시간 분할(time sharing) 관리: 하나의 자원을 여러 스레드들이 번갈아가며 사용e.g., 프로세서(CPU)는 1번에 1개만 사용 가능하다.프로세스 스케줄링: 프로세서 사용시간을 프로세스들에게 분배2. 공간 분할(space sharing) 관리: 하나의 자원을 분할하여 동시에 사용e.g., 메모리스케줄링의 목적시스템의 성능 향상1. 대표적인 시스템 성능 지표(index)목적에 맞는 지표를 고려하여 스케줄링 기법을 선택해야 한다. (1) 응답시간(response ..

CS/운영체제 2025.03.05

[운영체제] 3. 스레드 관리

스레드 개요프로세스는 자원을 할당받고, 자원을 제어해서 원하는 목적(작업)을 달성한다. 이때, 프로세스 내에서 실행되는 최소 실행 단위를 '스레드' 라고 한다. 하나의 프로세스는 여러 스레드를 가질 수 있으며, 스레드들은 같은 프로세스의 메모리 공간(자원)을 공유하며 독립적인 실행 흐름을 가진다.  아래와 같이 자원은 공유하는데, 이 자원을 제어하는 스레드는 여러 개 있을 수 있다.(프로세스가 할당받은 자원은 공유) 스레드의 개념Light Weight Process(LWP)프로세스는 원래 자원과 제어를 각각 갖고 있어야 하는데, 스레드는 자원은 공유하고 제어만 갖고 있으니 일반 프로세스보단 가볍다.프로세서(e.g., CPU) 활용의 기본 단위스레드가 여러 개면 동시에 여러 CPU 사용 가능구성요소Thre..

CS/운영체제 2025.02.23

[운영체제] 2. 프로세스 관리

Job과 Process1. 작업(Job) = 프로그램: 실행할 프로그램 + 데이터: 컴퓨터 시스템에 실행 요청 전의 상태2. 프로세스: Job이 실행을 위해 시스템(커널)에 등록된 작업시스템 성능 향상을 위해 커널에 의해 관리됨프로세스의 개념: 실행중인 프로그램: 커널에 등록되고 커널의 관리하에 있는 작업 (= 커널에 등록된 작업): 각종 자원들을 요청하고 할당받을 수 있는 개체: 프로세스 관리 블록(PCB)을 할당받은 개체: 능동적인 개체(active entity) - 실행 중에 각종 자원을 요구, 할당, 반납하며 진행 * PCB(Process Control Block)커널 공간 내에 존재각 프로세스들에 대한 정보를 관리1. 프로세스의 종류자원(resource)의 개념: 커널의 관리 하에 프로세스에게 ..

CS/운영체제 2025.02.22

[운영체제] 1. 운영체제의 개요

운영체제의 역할1. User Inteface (편리성)CUI (Character User Interface)GUI (Graphical User Interface)EUCI (End-User Comfortable Interface)2. Resource Management (효율성)HW resource (processor, memory, I/O devices, ...)SW resource (file, application, message, signal, ...)3. Process and Thread Management4. System Management (시스템 보호) 컴퓨터 시스템의 구성운영체제의 구분1. 동시 사용자수에 따라(1) Single-user system (단일 사용자)1) 한 명의 사용자만 시스..

CS/운영체제 2025.02.20

SQL(11) INDEX

인덱스란? : 데이터를 좀 더 빠르게 찾을 수 있도록 만든 데이터 구조. - 데이터의 저장(INSERT, UPDATE, DELETE)의 성능을 희생하고, 대신에 데이터의 읽기 속도를 높여 테이블의 동작 속도를 높여준다.- 인덱스가 없어도 데이터베이스를 작동하는데 있어서 문제는 없지만,데이터베이스의 크기가 커지면 커질수록 데이터베이스의 성능을 위해 인덱스가 반드시 필요해진다.인덱스의 특징- 테이블에서 한 개 이상의 속성을 이용하여 인덱스를 생성한다.- 인덱스를 사용하면 매우 빠른 응답 속도를 얻을 수 있고 쿼리의 부하가 줄어들어 시스템 전체 성능이 향상된다.- 데이터베이스에 인덱스를 위한 전체 크기의 10%나 되는 추가적인 공간을 할당해줘야 하고,   잘못 사용할 경우 성능이 오히려 크게 떨어질 수 있다...

[네트워크] IP 주소

1. ARP & RARP- 컴퓨터-컴퓨터 간의 통신은 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신한다.(1) ARP: IP주소(가상주소)로 부터 MAC주소(실제주소)를 구하는 프로토콜(2) RARP: MAC주소로부터 IP 주소로 변환해주는 프로토콜- RARP는 21세기에는 잘 쓰이지 않아 사실상 폐기된 프로토콜이라고 한다.  (3) ARP의 주소를 찾는 과정 STEP 1) 장치 A가 ARP Request 브로드캐스트를 보내서 IP주소에 해당하는 MAC 주소를 찾는다.* 브로드캐스트: 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식 STEP 2) 해당 MAC 주소를 가진 장치 B가 ARP Reply 유니캐스트를 통해 MAC 주소를 반환하는 과정을..

CS/네트워크 2024.08.19

[네트워크] OSI 7계층 모델 & TCP/IP 4계층 모델

1. 인터넷 프로토콜 스위트 (Internet protocol suite): 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합으로,  TCP/IP 4계층 모델 또는 OSI 7계층 모델로 설명한다.* 네트워크 프로토콜: 네트워크에서 제공하는 통신기능들이 제대로 동작하기 위해 통신에 참여하는 참여자들 사이에서 약속된 통신 방법(1) 네트워크 계층구조를 나눈 이유- 네트워크 구조를 여러 계층으로 나누어 정의하면1) 통신이 일어나는 과정에서 데이터의 흐름을 한 눈에 파악하기 쉽다.2) 통신 과정 중 문제가 발생하면 다른 단계를 건드리지 않고 문제가 발생한 단계에서 해결 가능하다.3) 각 계층들은 다른 계층의 영향을 받지 않도록 설계되어 있어 독립적으로 발전해나갈 수 있다.    (다양한 유형..

CS/네트워크 2024.08.12

SQL(10) VIEW

1. VIEW란?: SELECT 쿼리문을 저장한 객체로, 가상 테이블이라 불린다.- 실질적인 데이터를 물리적으로 저장하는 것이 아니라 논리적으로 저장 2. VIEW의 사용 목적- 보안성- 복잡한 SELECT 구문을 간결하게 작성 가능 3. VIEW 사용하기-- VIEW 생성 (무언가를 생성하려면 DDL 구문 사용)CREATE VIEW hansik AS SELECT menu_code , menu_name , menu_price , category_code , orderable_status FROM tbl_menu WHERE category_code = 4;-- VIEW 조회SELECT * FROM hansik;-- 베이스 테이블의 데이터 변경 -> VIEW의 데이..

SQL(9) 날짜/시간 관련 함수

1. 날짜/시간 관련 함수(1) ADDDATE(), SUBDATE()SELECT ADDDATE('2023-05-31', INTERVAL 30 DAY) -- 30일 뒤의 날짜 반환 , ADDDATE('2023-05-31', INTERVAL 6 MONTH) -- 6개월 뒤의 날짜 반환 , SUBDATE('2023-05-31', INTERVAL 30 DAY) -- 30일 전의 날짜 반환 , SUBDATE('2023-05-31', INTERVAL 6 MONTH); -- 6개월 전의 날짜 반환 (2) ADDTIME(), SUBTIME()SELECT ADDTIME('2023-05-31 09:00:00', '1:0:1') -- 1시간 1초 뒤의 날짜(시간포함)..

SQL(8) 숫자 관련 내장 함수

1. 숫자 관련 내장 함수(1) ABS(숫자) : 절댓값 반환SELECT ABS(-123); -- 123 (2) CEILING, FLOOR, ROUND(숫자): 올림, 내림, 반올림SELECT CEILING(1234.56), FLOOR(1234.56), ROUND(1234.56); -- 1235, 1234, 1235 (3) CONV(숫자, 원래진수, 변환진수): 원래진수로 표현된 숫자를 변환진수로 변환SELECT CONV('A', 16, 10), CONV('A', 16, 2), CONV(1010, 2, 8);-- 10 1010 12 (4) MOD(숫자1, 숫자2): 숫자1을 숫자2로 나눈 몫SELECT MOD(75, 10), 75%10, 75 MOD 10; -- 5 5 5 (5) POW(..