반응형

전체 글 112

소프트웨어 공학 (Chapter 01 ~ Chapter 02)

[ 1. An Introduction to Software Engineering ] [ Software Engineering ] - 소프트웨어는 전문적이고 비용적으로 효율적인 소프트웨어 개발을 위한 이론, 방법론, 도구론들과 관련되어 있음 - 대부분, 더 많은 시스템들은 컨트롤된 소프트웨어임 - 선진국들은 소프트웨어에 의존함 - 소프트웨어 코스트들은 자주 컴퓨터 시스템 비용을 지배함 - 소프트웨어를 유지하는 비용이 개발하는 비용보다 많이듦 [ 소프트웨어 제품의 종류 ] - Generic Software : 이를 사고 싶은 어떤 사용자들에게든 팔림, 소프트웨어 명세서는 소프트웨어 개발자로부가 소유함 - Custom Software : 특정 소비자들의 니즈를 충족시키기위해 해당 소비자들에게만 판매되는 소프트..

운영체제 (OS) - Chapter 05

● Chapter 05의 목표- 다중 프로그램 운영 체제기반의 CPU 스케줄링에 대해 설명 - CPU 스케줄링에 사용되는 다양한 알고리즘 대해 설명 - 특정 시스템을 위한 CPU 스케줄링 알고리즘을 선택하는 데 사용되는 기준에 대해 설명명 - 운영체제에서 사용되는 스케줄링 알고리즘에 대해 설 ● Basic Concepts- CPU 사용성을 최대화하려면 해당 CPU를 필요로 하는 프로세스들이 여러개가 있어야함 (멀티프로그래밍 형태) - 프로세스 실행은 CPU 실행과 I/O 대기의 처리로 구성됨 - 프로세스의 실행은 CPU 버스트로 시작한 다음 I/O 요청 작업을 실행함 ● Histogram of CPU-burst Times- burst duration : CPU를 사용한 시간 - frequency: CPU..

운영체제 (OS) - Chapter 04

● Chapter 04의 목표- 다중 프로그램 운영 체제기반의 CPU 스케줄링에 대해 설명 - 멀티스레드 컴퓨터 시스템의 작동에 필수적인 CPU 활용의 기본 단위인 쓰레드에 대해 설명 - Pthreads(POSIX 스레드), Windows, Java를 포함한 다양한 환경에서 쓰레드 관리를 위한 API에 대해 설명 - 암시적 스레딩을 지원하는 다양한 방법 지원하는 몇몇 쓰레드 전략들에 대해 설명 - 멀티스레드 프로그래밍에서 흔히 발생하는 문제들에 대해 설명 - Windows 및 Linux와 같은 운영 체제가 쓰레드에 대해 지원하는 서비스들에 대해 설명 ● Motivation- 대부분의 현대 애클리케이션들은 멀티스레드로 구성됨- 쓰레드는 애플리케이션 안에서 실행됨 - 애플리케이션에서 다중작업은 각 작업들을 ..

운영체제 (OS) - Chapter 03

● Chapter 03의 목표- 프로세스의 개념에 대해 설명하기, 프로세스란 모든 계산의 기반을 형성하는 실행 중인 프로그램임 - 프로세스의 특징을 설명하기, 프로세스의 일정, 생성 및 종료, 통신 측면이 포함. - 공유 메모리와 메시지 전달을 사용하는 프로세스 간 통신 살펴보기 - 클라이언트-서버 통신을 설명하기 ● Process Concept- OS는 매우 다양한 프로그램들을 실행하며, 프로그램은 일괄 처리 시스템에서 작업으로 그룹화되거나, 시간 공유 시스템에서 사용자 프로그램이나 작업으로 그룹화됨 - 교재는 job과 proces라는 용어를 사용 - 교재는 프로세스를 실행 중인 프로그램으로 정의함 - 프로세스가 그저 어떤 프로그램이 아니라는 것을 강조함 [프로세스의 구성요소들] - 텍스트 섹션이라고 ..

운영체제 (OS) - Chapter 02

● Chapter 02의 목표- OS가 사용자, 프로세스, 다른 시스템들에 제공하는 서비스에 대해 설명 - OS를 구성하는 다양한 방법들에 대해 설명 - 어떻게 OS가 설치되고 커스텀화되며, 부팅되는지 설명 ● Operating System Services- OS는 사용자들과 프로그램들에 대한 서비스와 프로그램을 실행할 수 있게하는 환경들을 제공해줌 - OS 서비스들중의 한 세트는 유저를 도와주는 기능들을 제공함 - User Interface (UI): 대부분의 OS는 User Interface를 가짐 ---> Command-Line-Interface (CLI), Graphics User Interface (GUI), Batch 등이 대표적 - Program execution: 시스템은 반드시 하나의 프..

운영체제 (OS) - Chapter 01

● Chapter 01의 목표- 컴퓨터 시스템의 구조 알기- OS를 구성하는 주요 구성요소들에 대해 알기(나머지는 교재참고, 수업에서는 안다룸)   ● OS는 무엇인가?- OS는 사용자와 하드웨어 사이에서 동작하는 프로그램임 (but, 일반적인 application 과는 성격이 다름) ● OS의 목표- 1차적으로 사용자 프로그램들을 실행시켜주는 역할을 함- 프로그램 실행도중 발생하는 사용자문제를 쉽게 해결할 수 있도록 도와줌- 컴퓨터 시스템을 보다 쉽고 편하게 사용할 수 있도록 도와줌- resource들을 관리하여 하드웨어가 효율적으로 사용될 수 있도록 도와줌        ● OS가 동작하는 환경- 4개의 컴포넌트로 컴퓨터 시스템 구조를 나누어 볼 수 있음  - 사용자 (user, 최상위 컴포넌트) : ..

List, Linked List (이것이 자료구조 + 알고리즘이다)

● 리스트( List)란? - 목록 형태로 이루어진 데이터 형태로, 목록의 개별요소들을 노드(Node)라고 한다.    ● 리스트(List) 구조 - 리스트는 각각의 노드들로 구성되어 있음- 리스트의 첫번째 노드를 헤드(Head)라고 하고, 리스트의 마지막 노드를 테일(Tail)이라고 한다.- 노드의 개수가 곧 리스트의 길이임     ● 왜 배열 대신 리스트를 사용하는가?- 배열은 생성시에 반드시 크기를 지정해줘야 하며, 생성한 이후에는 그 크기를 수정할 수 없지만, 소프트웨어가 지정된 크기보다 많은 메모리를 필요로 하는 경우 문제가 발생한다. 그렇기에 배열의 크기를 너무 작게 설정하자니 제대로 동작하지 않고, 무작정 크게 선언하자니 낭비되는 메모리가 너무 많아 메모리가 부족하게 된다. 이러한 배열의 단..

소프트웨어 공학 (3주차)

● 소프트웨어 공학에서의 기본 원칙들 (Fundamentals) - 개발 프로세스: 소프트웨어는 잘 정의되고 이해되는 개발 프로세스를 활용하여 개발되어야 함 ex) SDLC ( Software Developer  Life cycles : 소프트웨어 개발 생명 주기),  Agile 방법론, DevOps 관행 등등의 개발 프로세스들이 존재 - 소프트웨어 품질: 신뢰성 (dependability) 와 성능(performance)는 모든 시스템에 필수적으로 보장되어야 하며, 다양한 조건에서도 안정적으로 좋은 퍼포먼스를 보여 신뢰성이 보장되어야함 - 요구공학:  '요구 공학'을 활용하여 사용자들의 요구사항들이 제대로 소프트웨어가 충족시키는 중인지 확인하고 관리할 수 있어야 하며, 변화하는 사용자들의 니즈들을 충족..

컴퓨터 구조 ( 1~2주차)

● 비트(bit)란?비트란 'binary digit'의 약자로 2진수로 표현되는 '컴퓨터에서 가장 작은 데이터 표현단위'이다.  - 각 비트는 2진법으로 이루어져 있기에 0과 1로만 표현 (2진법인 이유는 컴퓨터의 전자적 특성때문임) - 비트들의 집합은 여러 방법으로 인코딩/번역되며 모든 데이터는 결국 비트의 조합으로 표현됨 -  숫자뿐만 아니라 집합, 문자열 등까지도 bit를 활용해 표현할 수 있음 - 2진수의 뿌리는 '음'과 '양'임   비트(2진수)의 표현과 변환의 예ex) 00000001 (2진수) = 1 (10진수)      00000010 (2진수) = 2 (10진수)      11111111 (2진수) = 255 (10진수)       64 (10진수) = 01000000 (2진수)     ..

반응형