본문 바로가기

KNU Freshman/컴퓨터학개론

(16)
(7) 운영체제에서의 CPU 스케줄링 컴퓨터 자원 할당 및 스케줄링•컴퓨터 자원(CPU, 메모리, 디스크, 네트워크 등)을 여러 프로세스가 동시에 사용하기 위해서는 자원의 효율적인 할당 및 스케줄링 필요•컴퓨터 자원의 종류   –비선점 자원: 자원이 프로세스에 할당되면 스스로 반환하기 전까지 회수 불가       •디스크, Lock, 터미널 등–선점 자원: 자원을 프로세스에 할당하고 회수를 자유롭게 함      •CPU, 메모리 등  (선점 자원은 메시-> 메모리, 시피유 ㅎ)•공간 기반 자원 공유 vs 시간 기반 자원 공유  – 물리적으로 나누어질 수 있으면 공간 기반 공유(예: 메모리, 디스크, 멀티 CPU)  – 물리적으로 나눌 수 없으면 번갈아가면서 일정 시간 동안 공유(예: 단일 CPU) CPU 스케줄링•CPU 스케줄링의 목적– 다..
(6)-2 운영체제의 주요 기능 운영체제와 커널(Kernel)• 넓은 의미에서의 운영체제– 윈도우, 리눅스, 맥 OS과 같이 널리 일반적으로 사용– 운영체제의 핵심 기능을 비롯하여 시스템 프로그램, 라이브러리, 서비스, GUI 등을 포함 • 좁은 의미에서의 운영체제– CS 학문에서의 운영체제는 커널을 말함– 프로그램들을 구동하고 컴퓨터를 제어하는 프로그램 • 커널이란(Kernel)–하드웨어를 제어하고 중재하는 역할– 하드웨어에 대한 추상화 제공– 시스템 자원을 적절히 배분하는 역할– 사용자, 프로그램, 운영체제를 보호하는 역할– 기타 등등 이중모드와 시스템 호출 • 이중모드   - 프로그램은 컴퓨터 자원에 직접 접근할 수 없으며, 운영체제를 통해서 대신 접근할 수 있음   -  CPU가 명령어를 실행하는 모드를 사용자 모드와 커널모드로..
(6)-1 컴퓨터 구조와 운영체제 컴퓨터 구조와 운영체제 컴퓨터 구조- 중앙처리장치 (CPU)    1. ALU (산술논리연산장치)    2. Control Unit (제어 장치)    3. 레지스터- 주기억장치 (메모리)- 보조기억장치- 입출력장치 * 위 모든 장치는 시스템 버스와 연결 (주소 버스, 데이터 버스, 제어 버스를 통해 통신함) CPU 구조- ALU: 연산/계산을 담당- 레지스터: 임시 저장 장치로 프로그램에 실행하는데 필요한 값을 저장- 제어장치: 컴퓨터의 각 부품들에 제어 신호를 보내고 명령어를 해석(메모리 읽기, 쓰기) 프로그램 실행 과정  저장할 데이터: 데이터 버스메모리 읽기/쓰기 신호: 제어 버스저장할 주소: 주소 버스 IP(Instruction Register): 현재 실행할 명령을 저장IR(Instructio..
(5) 프로그램의 번역 프로그램의 구성 - 프로그램은 문장(Statement)으로 구성 - 프로그램의 문장은 자연어의 문장(sentence)과 유사함 - 문장은 프로그램의 실행 단위임 문장은 표현식(Expression), 선언, 제어, 함수 호출 등으로 구성 - 표현식은 문법(Syntax)에 의해 값으로 계산됨 ex) result = 1 + 2; -> result, =, 1, +, 2 는 Lexeme *위 문장은 두 개의 표현식으로 구성: (1) 1+2, (2) result = 3 표현식은 변수, 연선자 등으로 구성 -프로그램의 최소 단위(Lexeme)인 어휘로 자연어의 단어와 유사 문법 (Grammar) - 어휘 (Lexeme): 프로그램을 구성하는 가장 최소 단위로 문자를 조합하여 단어로 구성 - 구문 (Syntax): 문..
(4) 프로그램 구조 프로그램의 구조 - 제어흐름: 프로그램에서 명령어가 실행하는 순서 - 순차 구조(순차 동작): 메모리 공간에 저장된 기계어 코드 프로그램이 Program Counter(위치)에 따라 지정된 순서대로 실행됨 - 선택 구조(선택 동작): 프로그램 코드 안에서 조건을 바탕으로 특정 부분을 수행하는 구조 - 반복 구조(반복 동작): 프로그램의 실행 순서를 변경하여 특정 코드 단위(Block)을 실행 [순환(loop)이라는 단어와 혼용하여 사용] 순차 구조의 구성 - 수식: 값, 변수, 연산자, 함수 호출의 조합으로 나타나는 표현식(Expression) - 값: 숫자, 문자열, Boolean과 같은 상수로 표현되는 것 - 변수: 메모리에 저장되는 값이며 이름을 가짐 - 연산자: 값이나 변수에 대해서 연산을 수행하..
(3) 프로그래밍 언어의 역사 프로그래밍 언어의 개념 프로그래밍 언어: 컴퓨터가 이해하는 말로 컴퓨터에서 작동하는 소프트웨어를 만드는 도구 - 소스코드를 한 줄씩 읽어 즉시 번역하여 실행 -실행파일 미생성하며 실행속도 slow, 테스트와 수정 등의 유연성 high ex) Python, BASIC, JavaScript, Ruby etc -소스코드를 전체 번역하여 실행 파일 만들어 실행 속도가 fast -개발이 신속하지 못한 점이 있지만, 비교적 safe ex) C, C++, C#, Java, Go etc 고급 언어(Very-High Level Language) -추상화(abstraction) 정도가 매우 높은 언어를 말한다. 1. 사용자가 코드의 기능 외적인 부분을 덜 신경 써도 된다. (메모리 관리, 자료형에 따른 처리 등) 2. 최..
(2) 컴퓨터의 역사 & 알고리즘 컴퓨터의 특징 - 기계가 스스로 정보를 읽어서 저장할 수 있는 메모리가 있어야 함 -명령어를 자동으로 수행하는 프로그래밍을 할 수 있어야 함 *파스칼의 계산기 or 라이프니치의 계산기는 컴퓨터로 보기 어려움 컴퓨터의 발전 과정 1. 주판 2. 파스칼의 계산기(1672) - 덧셈과 뺄셈이 가능한 최초의 기계식 계산기 3. 라이프니치의 계산기(1674) - 덧셈, 뺄셈, 곱셈, 나눗셈이 가능한 계산기 ------------- 여기서부터 컴퓨터의 진정한 발전 ------------- 4. 조셉 자커드의 직조기(1801) -프로그래밍이 가능한 기계 -향후 컴퓨터 발전에 많은 영향을 미침 5. 배비지의 차분기관과 해석기관(1820~1830년대) -영국의 수학자 배비지는 다항함수를 계산할 수 있는 기계식 계산기인 ..
(1) 컴퓨팅 사고 컴퓨터란? -데이터를 저장하고, 검색하고 처리할 수 있는 프로그래밍 가능한 전자적 기계 장치 컴퓨팅적 사고란? 두뇌에서 이루어지는 문제 해결과정을 컴퓨터가 수행할 수 있도록 하는 것 문제해결과정 -> 알고리즘으로 표현하고, 자동화할 수 있는 시스템 만드는 것 컴퓨팅 사고력(Computational Thinking) -1980, 미국 시모어 페퍼트 교수가 처음 사용 -문제 해결할 때, 필요한 자료 추출하고 분석하고 자료의 일정한 경향을 파악하는 알고리즘 구성 포함 -카네기 멜론 대학의 지넷 윙이 모든 사람이 갖추어야 할 기능이라고 주장함 * 컴퓨팅은 추상화한 것을 자동화하여 컴퓨터로 처리하는 것 컴퓨팅 사고를 이용한 문제 해결 단계 -데이터 수집 -분해 -패턴인식 -추상화 -알고리즘 설계 -테스트와 디버깅..