본문 바로가기

분류 전체보기30

[운영체제] 4. 스레드 관리 - (1) 스레드의 필요성과 개념 📍1. 스레드의 필요성 ☑️ 프로세스를 수행 단위로 하는 멀티프로그래밍의 문제점 1️⃣ 프로세스 생성의 큰 오버헤드- 프로세스를 위한 메모리 할당, 부모 프로세스로부터 코드와 데이터 복사- PCB 생성, 매핑 테이블(페이지 테이블) 생성 등 2️⃣ 프로세스 스위칭(process switching) 시 큰 오버헤드 - 기존 프로세스 컨텍스트를 PCB에 저장, 새 프로세스 PCB 갱신 및 CPU 레지스터로 복원- CPU가 참고할 매핑 테이블(페이지 테이블)의 교체 시간- CPU 캐시에 새 프로세스의 코드와 데이터가 채워지는데 걸리는 시간 등3️⃣ 프로세스 사이 통신의 어려움- 프로세스가 다른 프로세스의 메모리에 접근 불가- 커널 메모리나 커널에 의해 마련된 메모리 공간을 이용하여 데이터 송수신- 이 방법.. 2025. 4. 17.
[인공지능원론] 4. 전문가 시스템 📍1. 전문가 시스템 구조기존의 절차적 코드가 아니라, 규칙으로 표현되는 지식을 통해 추론함으로써 복잡한 문제를 해결하도록 설계 📍2. 전문가 시스템의 구성 요소 1️⃣ 지식베이스2️⃣ 추론 기관3️⃣사용자 인터페이스 📍3. 지식과 인공지능 ☑️ 지식 표현 방법1️⃣ 생성 규칙(production rule)2️⃣ 술어 논리(Predicate Logic)3️⃣ 의미망(Semantic Net)4️⃣ 프레임(Frame)5️⃣ 개념 그래프 (conceptual graph) ✔️ 데이터, 정보, 지식 차이와 관계 📍4. 규칙(생성 규칙(production rule)) ✔️ 규칙에 AND나 OR를 사용할 수 있음 ✔️ 규칙에 >, 📍5. 전문가 시스템에서의 추론✔️ 규칙과 .. 2025. 4. 14.
[인공지능원론] 3. 게임트리 📍1. 게임 프로그램✔️ 게임의 조건 1️⃣ 두 명의 경기자경기자들이 연합하는 경우는 다루지 않음 2️⃣ 제로썸 게임한 경기자의 승리는 다른 경기자의 패배. 협동적인 승리는 없음(e.g. 바둑, 체스) 3️⃣ 순차적 게임차례대로 수를 두는 게임만을 대상으로 함 ☑️Tic-Tac-Toe의 게임 트리 - 2인용 게임 - 두 경기자 MAX와 MIN - 항상 MAX가 먼저 수를 둔다고 가정 ✔️ Tic-Tac-Toe의 게임 트리의 크기 - 게임 보드는 3×3 크기 - 한 곳에 수를 놓으면 다른 사람이 놓을 수 있는 곳은 하나가 줄어듦➡️ 9×8×7×...×1 = 9! = 362,880하지만 대칭이나 반사를 제외하면 서로 다른 상태는 5478개뿐 📍2. 미니맥스 알고리즘 ✔️ 상대방이 항상 최선의 수를 .. 2025. 4. 14.
[인공지능원론] 2. 탐색(Search) - (2) 📍1. BFS와 DFS 8-퍼즐 프로그램✔️ 게임 보드 표현class State: def __init__(self, board, goal, depth=0): self.board = board self.depth = depth self.goal = goal # i1과 i2를 교환하여서 새로운 상태를 반환한다. def get_new_board(self, i1, i2, depth): new_board = self.board[:] new_board[i1], new_board[i2] = new_board[i2], new_board[i1] return State(new_board, self.goal, depth) # 자식 노드를 확장하여서 리스트에 저장하여서 반환한다.. 2025. 4. 14.
[운영체제] 3. 프로세스 관리 - (4) 멀티프로세스 응용 프로그램 !!여기도 .. 📍1. 멀티프로세스 응용 프로그램의 의미1-1. 멀티프로세스(multiprocess) ✔️ 운영체제에서 하나의 응용프로그램에 대해 동시에 여러 개의 프로세스를 수행할 수 있게 하는 기술 ✔️ 독립적으로 수행, 상호 통신 가능 ✔️ 독립적인 메모리 공간에 적재 e.g.) 웹 브라우저의 탭, 새 창 등 ✔️ 다수의 프로세스를 동시에 수행시킴으로서, CPU나 입출력장치 등 자원의 활용률을 높이고 빠른 응답시간을 제공하기 위함   1-2. 다수의 스레드가 동시에 수행되는 상황 1️⃣ Concurrency(동시성, 병행성): multiprogramming, interleaving 1개의 CPU 상에서 2개 이상의 프로세스가 수행되는 상황  2️⃣ Parallelism(병렬성): multiproc.. 2025. 4. 11.
[운영체제] 3. 프로세스 관리 - (3) 프로세스의 계층 구조 !!여기도 마인드맵!!  📍1. 프로세스 정보 보기1-1. Linux 쉘 명령으로 프로세스 정보 보기  1-2. Linux에서 C프로그램으로 PID와 PPID 알아내기e.g.) 시스템 호출 함수 getpid(), getppid()를 이용하여 PID와 PPID를 얻어내는 C프로그램 작성하기#include // printf()를 사용하기 위한 헤더#include // pid_t 타입을 정의하는 헤더#include // getpid(), getppid() 시스템 호출 선언int main(void) { pid_t pid, ppid; // PID를 저장할 변수들 선언 pid = getpid(); // ① 현재 프로세스의 PID 얻기 ppid = getppid(.. 2025. 4. 11.
[운영체제] 3. 프로세스 관리 - (2) 커널의 프로세스 관리 수업> !!!!!!!!!!!!!!!!!!!!!!!마인드맵!!!!!!!!!!!!!!!!!!!!!!!!!!!! 📍1. 프로세스 수행 제어를 위해 필요한 정보1-1. CPU 컨텍스트(context)✔️ 사용 중인 CPU 레지스터들의 내용 1-2. 커널 컨텍스트✔️ 식별자: 부모, 자신, 자식식별자, 프로세스를 생성한 사용자 정보✔️ 프로세스 상태: 준비, 수행, 블록 등✔️ 스케줄링 정보: 우선 순위, 프로세서 사용 시간 등의 정보✔️ 메모리 관리를 위한 정보: 코드와 데이터, 공유되는 메모리 블록들의 주소, 매핑테이블✔️ 입출력 상태 정보: 미해결 입출력 요청, 할당된 입출력 장치, 사용 중인 파일리스트 등의 정보✔️ 프로세스 간의 통신 정보: 다른 프로세스로부터 받은 신호 플래그, 메시지 정보✔️ Acc.. 2025. 4. 11.
[운영체제] 3. 프로세스 관리 - (1) 프로세스 개요 수업> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!마인드맵!!!!!!!!!!!!!!!!!!!!!!!!!!!! 📍1. 프로세스 개요1-1. 프로세스의 의미 ✔️ 다중프로그래밍 운영체제에서 발생하는 에러의 원인들은 프로세스 간    1️⃣ 부적절한 동기화*(improper synchronization)    2️⃣ 상호배제** 실패(failed mutual exclusion)    3️⃣ 비결정적인 프로그램 연산***(nondeterminate program operation)    4️⃣ 교착상태 발생(deadlocks)* 부적절한 동기화: 프로그램 실행이 보류된 상태에서 동기화를 잘못 수행해 신호가 분실되거나 중복되는 것 **상호배제: 동시에 실행되는 프로세스가 공유 자원을 동시에.. 2025. 4. 11.
[운영체제] 2. 컴퓨터 시스템과 운영체제 - (4) 커널과 인터럽트 수업>   📍1. 컴퓨터에서 인터럽트 활용1-1. 인터럽트의 정의✔️프로그램 수행 중 시스템에 예기치 않은 상황이 발생하였음을 CPU에게 알리는 신호✔️하드웨어 인터럽트 ➡️ 비동기적 인터럽트- 외부 장치들이 어떤 상황 발생을 CPU에게 알리는 하드웨어 신호 - 비동기적이란 예정되지 않거나 발생시간을 예측할 수 없는 사건 - CPU는 인터럽트를 수신하면 인터럽트 서비스 루틴 수행✔️소프트웨어 인터럽트 ➡️ 동기적 인터럽트- CPU가 수행하는 프로그램 내부에서 발생함 - 동기적이란 발생 시점이 프로그램의 일정한 지점이기 때문 - 트랩(trap)이라고 하며, 시스템 호출과 예외(exception)가 있음 - 하드웨어 인터럽트를 수신한 것과 동일하게 처리 1-2. 컴퓨터에서 인터럽트 활용마우스를 움직이거나 .. 2025. 4. 9.