본문 바로가기

프로그래밍/컴퓨터공학

(12)
운영체제 - 식사하는 철학자 문제와 교착상태에 대해 알아보기 식사하는 철학자 문제 (Dining Philosophers Problem) 운영체제 수업 시간에 식사하는 철학자 문제와 교착상태를 배우게 되었다. 교착상태는 티비에서도 가끔 나오고 그래서 대충 알고 있었는데 이번에 제대로 알게되었다. 식사하는 철학자 문제는 1965년 네덜란드의 대학교에서 병렬처리에서의 동기화 이슈와 해결 방법을 설명하려고 학생들에게 냈던 시험 문제라고 한다. 1. 5명의 철학자가 원탁에서 식사를 하려고 자리에 앉았있다. 2. 각각의 철학자들 앞에는 스파게티가 1접식씩 있고 철학자들 사이에 포크가 하나씩 있다. 즉 포크는 5개 3. 각 철학자는 옆의 철학자에게 말을 할 수 없으며, 두 가지 행동을 한다. 스파게티를 먹거나 생각하거나 4. 철학자는 식사를 하기 위해서 자신의 양옆에 있는 2..
[운영체제 학습 노트] 스레드 매핑, 스케줄링 기법 라운드로빈, 스레드 동기화 멀티스레딩 매핑 N:1 장점 : 속도가 빠르다 단점 : 병렬성을 얻을 수 없다 1:1 장점 : 높은 병렬성 단점 : 컨텍스트 스위칭 등의 비용 부담이 크다 N:M 장점 : 커널 레벨 스레드가 적어 커널 부담이 적다 단점 : 매핑 스케줄링 과정이 복잡하다 멀티 스레드 운영체제에서 PCB에 저장하는것 환경 컨텍스트, 모든 스레드가 공유하는 프로세스의 정보 TCB에 저장하는것 실행 컨텍스트, 현재 실행중인 실행단위 정보 CPU 스케줄링 정의 Ready 상태의 스레드를 선택하여 cpu 할당 목적 cpu 유휴 시간을 줄여 cpu 활용률 향상 프로세스가 i/o를 요청하면 다른 프로세스에게 cpu 할당 CPU 스케줄링 선택 기준 = CPU 스케줄링 목적 1. CPU 활용률 향상 2. CPU 처리율 향상 3. 응답시간..
[운영체제 학습 노트] 프로세스와 스레드, 프로세스 관리 프로세스 프로그램과 프로세스의 차이 프로그램: 저장장치에 저장된 실행 가능한 파일 프로세스: 프로그램이 메모리에 적재되어 실행중일 때 운영체제의 프로세스 관리 1. 운영체제는 프로그램을 메모리에 적재하고 프로세스로 다룬다. 2. 프로세스들은 독립적인 메모리 공가늘 가지며 다른 프로세스의 영역에 접근할 수 없다. 3. 운영체제는 프로세스마다 고유한 번호 PID를 할당받는다. 4. 프로세스 정보는 커널에 의해 관리된다. 5. 운영체제 커널은 시스템 전체에 하나의 프로세스 테이블을 두고 모든 프로세스를 관리한다. 6. 프로세스를 실행할 때 프로세스제어블록 PCB를 생성하여 프로세스 정보를 저장한다. 구성 1. 코드영역 2. 데이터영역 3. 힙영역 4. 스택영역 프로세스 주소 공간 = 사용자 공간 + 커널 공간..
[운영체제 학습 노트] 운영체제와 커널의 자원 독점 관리, 자원 접근의 문제점 운영체제 정의 사용자와 컴퓨터 사이에서 중계 역할을 하면서 프로그램의 실행을 관리하고 제어하는 시스템 소프트웨어 또는 인터페이스 목적 1. 자원을 독점 관리하여 자원 충돌 해결 및 효율적 사용과 관리 2. 시스템 성능 최적화 및 효율화 3. 편리한 사용자 인터페이스 제공 기능 1. CPU/프로세스 관리 2. 메모리 관리 3. 파일 시스템 관리 4. 장치 관리 5. 사용자 인터페이스 제공 운영체제의 발전 1. 폰노이만의 내장프로그램 운영체제 CPU와 메모리를 분리 하드웨어와 소프트웨어를 분리 실행할 프로그램을 메모리에 적재 후 CPU가 프로그램을 실행 2. 원시 운영체제 로더 프로그램을 메모리에 적재 사용자 프로그램을 메모리에 적재 CPU가 사용자 프로그램을 실행 3. 배치 운영체제 펀치카드를 한번에 하나..
운영체제 (1) ~ (3) 주차 학습 노트 운영체제 실체가 있는 소프트웨어 사용자와 하드웨어 사이에서 중계 역할을 하면서, 프로그램의 실행을 관리하고 제어하는 시스템 소프트웨어 컴퓨터의 자원을 독점적으로 관리하는 소프트웨어 운영체제의 속성 컴퓨터 자원 관리 하드웨어 자원 - CPU, 캐시, 메모리, 키보드, 마우스.... 소프트웨어 자원 - 응용프로그램 데이터 자원 - 파일, DB 자원 독점 독점 : 자원에 대한 접근과 관리 권한이 오직 운영체제에 있다는 뜻 (자원 할당, 자원 공유, 자원 액세스, 자원 입출력) 관리자 프로그램 관리, 메모리 관리 소프트웨어 커널(관리 기능을 수행하는 핵심 코드), UI, 도구 프로그램 운영체제 목적과 기능 운영체제의 목적(목표) 사용자의 컴퓨터 사용 편리성 자원의 효율적 사용과 관리 운영체제 기능 CPU/프로세..
프로그래밍 입문 학습 노트 (1) 컴퓨팅 사고란? 1. 컴퓨터가 효과적으로 문제를 해결할 수 있도록 문제를 정의하고 그에 대한 답을 기술하는 일체의 사고 과정 2. 복잡한 문제를 단순한 문제로 분해한 후 이를 해결하기 위한 구조(알고리즘)을 만드는 과정 프로그래밍 언어 저급언어, 고급언어 소스코드 c, 자바, 파이썬 같은 프로그래밍 언어로 작성한 코드 목적코드 이진수로 이루어졌으며, 소스코드를 컴파일 또는 인터프리터를 통해 변환해야함 소프트웨어 개발 과정 문제분석 - 설계 - 프로그래밍 - 테스트 - 사용 - 유지보수 컴퓨팅 사고의 4단계 1. 문제분해 - 복잡한 문제를 작은 문제로 구분 2. 패턴인식 - 문제들 사이에 일정한 패턴 찾기 3. 일반화 - 다양한 문제의 공통된 해결 방법 모델링 4. 알고리즘 - 구체적인 순서와 방법을 개발..
자료구조와 알고리즘 학습 노트 기초 (2) 재귀와 귀납적 사고 복습 추상 데이터타입 (ADT : Abstract Data Type) 데이터나 연산이 무엇인가는 정의되지만 데이터나 연산을 컴퓨터 상에서 어떻게 구현하는가는 정의되지 않는다 재귀 (순환) 알고리즘이나 함수가 수행 도중 자기 자신을 다시 호출하여 문제를 해결하는 기법 * Good 정렬, 탐색 * Bad 피보나치수, 최적 행렬곱 경로 ex. 팩토리얼의 정의 (n!) def factorial(n): if n = 5 * 4 * factorial (3) -> ...... -> = 5 * 4 * 3 * 2 * 1 = 120 재귀호출의 가장 중요한 것은 재귀 호출을 멈추는 부분이 있어야한다 만약 없다면? 무한호출 순환 vs 반복 시간 복잡도가 동일할 때 어떤 것이 더 효율적인가? 바로 공간의 차이 프로그램의 중요도 ..
프로그래밍 입문 학습 노트 (1) 컴퓨터 기초 과거 사람들의 계산 방법 주판 -> 천공 카드 -> 기계식 계산기 -> 컴퓨터 컴퓨터의 발전 단계 역사 1세대 2세대 3세대 4세대(~ 현재) 5세대(미래~) 6세대 진공관 트랜지스터 직접 회로 (IC) 고밀도 직접회로 인공지능과 대화 자기 코어 자기코어 IC, 자기 코어 vlsi, lsi 음성 명령 자기 드럼 자기 디스크 자기 디스크 자기 디스크 초고속 장치 천공 카드 천공 카드 키보드, 마우스 대규모 병령처리 시스템 애니악, 에드박 IBM 논리적 추론을 지원하는 연산기능 기계어, 어셈블리어 포트란, 코볼 파스칼, 베이직 객체지향언어 논리프로그램, 인공지능기법, 병렬처리 개념을 내포하는 추상적 언어 제공 다중 프로그래밍 방식 소프트웨어 체계 확립 운영체제 방식 시분활, 바이트 단위 컴퓨터 ..