메가바이트 스쿨 7주차 (1/27) 자료구조, 알고리즘, 운영체제

정영찬·2023년 1월 27일
0
post-thumbnail

자료구조 큐, 덱, 힙

  • FIFO(First In First Out, 선입선출) 구조의 자료구조
  • 장점
    - 데이터 접근, 삽입, 제거가 빠르다
    • 중간에 위치한 데이터에 대한 접근이 불가능함
  • 스택과 달리 대기열이 양쪽 끝이 열려있음
  • 한쪽 끝은 항상 데이터를 삽입하는데 사용되고, 다른 쪽은 데이터를 제거하는데 사용된다. 대기열은 선입선출 방식을 따른다. 즉, 먼저 저장된 데이터 항목이 먼저 액세스 된다.

큐의 추상 자료형

indexMethod nameParamsrule
1Enqueue{}맨 뒤에 요소 삽입
2Dequeue{}맨 앞에 요소 삭제
3Peek{}데이터 참조
4front{}프론트 데이터 출력
5rear{}레어 데이터 출력

  • FILO+FIFO 형태의 자료구조
  • 장점
    - FIFO 형식이든 FILO 형식이든 둘다 사용핤 ㅜ있다는 점에서 유연하게 데이터 관리 가 가능하다
    • 양쪽에서 빠르게 요소를 추가/제거 가능하다.
  • 단점
    - 중간 데이터에 접근한다면 느린편이다.
    • 메모리 사용이 크다(이중연결리스트이기 때문)

각 노드가 자식값에 따라 정렬되어야 하는 트리와 같은 자료구조이다.

  • 특징
    - 힙 트리에서는 중복된 값을 허용한다.
    • 힙에서는 가장 높은 우선순위를 가지는 노드가 항상 뿌리 노드에 오게 되는 특징이 있으며, 이를 응용하면 우선순위 큐와 같은 추상적 자료형을 구현할수 있다.

힙? in javascript

힙메모리(Heap Memory - 가용 메모리를 힙이라고 부름)

  • 동적으로 할당된 변수가 할당되는 영역(Dynamic Memory Allocation)

  • 원시타입은 스택 영역에 그리고 객체 타입은 힙 영역으로 담깁니다.

  • 힙메모리(메모리 공간이 동적으로 할당되고 해제)와 힙은 서로 다른 것이다.

자바스크립트 실행예시

  • 자바스크립트는 싱글 스레드 기반 언어로 스택 메모리를 하나만 가집니다.

  • 스택은 함수 호출이 끝난 후 OS에 의해 정리되지만, 힙 메모리는 정리되지 않습니다.

  • 쓸모없는 데이터가 메모리상에 있다면, 이건 불필요하게 공간을 차지하는 것을 메모리 누수라고 표현합니다

  • 특정 컴포넌트에서 스크롤 이벤트를 걸어주기위해 이벤트 리스너를 등록하고, removeEventListener를 안해주어서 해당 이벤트를 필요로 하지 않는 화면에서도 메모리상에 이벤트가 남아있는 경우도 메모리 leak 이슈 발생

아웃오브메모리

  • 힙메모리에 입력만 들어오면 큐에 데이터가 계속 쌓이기만 해서 발생하는 에러
  • 데이터가 쌓여서 발생하는 문제면 공간복잡도 관점으로 봐서 메모리 공간 문제를 해결하는 방식으로 접근
  • 메모리 릭을 계속 유발하면, out of memory 오류와 함께 프로세스가 종료될수 있음

스택오버플로우 vs 아웃오브메모리

공통점

  • 공간부족문제로 인해서 일어나는 에러
  • 발생 원인과 해결 방법은 유사하다

차이점

에러 종류저장되는 데이터 위치저장되는 데이터 종류저장되는 방법
스택오버플로우콜스택변수FILO
아웃오브메모리힙메모리의 큐객체FIFO

자바스크립트 메모리 관리법

https://developer.mozilla.org/ko/docs/Web/JavaScript/Memory_Management

운영체제

개발자가 왜 하드웨어를 알아야 합니까?

  • 컴퓨터의 기본 구조를 이해하고 컴퓨터에서 동작하는 소프트웨어에 대한 개발이 이뤄져야 clean code를 작성할수 있게 된다.

Computation Vs Calculation?

컴퓨터는 기존 연산을 활용해 연산을 정의함으로써 새로운 연산을 '가르칠' 수 있다는 데 있다.
"평균을 구한다"라는 연산의 의미가 "집합 내의 숫자를 모두 더한 후 집합의 크기로 나눈다"라고 가르칠 수 있다. 그럼 이렇게 정의한 연산을 이용해 훨씬 더 많은 연산을 만들 수 있지만 계산기의 경우는 사람이 직접 입력한 숫자와 사칙연산을 통해서만 계산이 가능하다.

Computer Science and Engineering

컴퓨터의 소프트 웨어를 다루는 학문

CISC & RISC Architecture

  • Comlex Instruction Set Computers
    - 복잡한 명령구조
    • 어드레싱에 강점
    • 전력 신경쓸 필요없이 고성능 컴퓨팅에 사용
  • Reduced Instruction Set Computers
    - 명령어의 단순화
    • 메모리 접근 횟수가 적음
    • 저전력 프로세싱에 사용

메모리

컴퓨터에서 사용할수 있도록 정보를 저장하는 공간

Random Access Memor

  • 자유롭게 읽고 쓸수 있는 주기억 장치
  • 메모리의 주소로 그 위치에 접근
  • RAM의 어떤 위치로든 같은 시간에 접근(Random Access)
  • 컴퓨터가 느려지면 재부팅을 해서 메모리 공간 확보

Read Only Memory

  • 전원이 공급되지 않아도 그 정보를 유지하는 주기억장치
  • 비싸거나 느려서 안정적인 정보를 저장해야할때 사용
  • BIOS, OS, Firmware 정보 저장에 쓰임

OS

  • Operating System: 운영체제
  • 시스템 하드웨어를 관리하고, 응용 프로그램 실행을 위한 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어

Kernel

하드웨어와 응용프로그램을 이어주는 운영체제의 핵심 시스템소프트웨어

  • MacOs: XNU
  • Linux: linux
  • Windows: windowsNT

OS === Kernel??

운영체제의 핵심 역할 수행

  • 하드웨어, 프로세스 보안
  • 시스템 자원관리(스케줄링)
  • 하드웨어 추상화 - 일관성 있는 인터페이스 제공

Database

data

  • 컴퓨터가 처리할 수 있는 문자, 숫자 ,소리, 그림 따위의 형태로 된 정보
  • 라틴어 'datum'의 복수형 'Data' 에서 유래

DBMS(DataBase Management System)

-데이터의 모임인 Database를 만들고 저장, 관리 할 수 있는 기능을 제공하는 응용프로그램

  • Oracle. Mysql, MariaDb, DB2, MS SQL Server....

DBMS 조상님

dBASE

  • 마이크로컴퓨터용 최초의 DBMS
  • 1979년 Ashton이 개발
  • SQL이 아닌 독자 스크립트 언어로 실행 -> dbf 파일 생성

Characteristics

  • 데이터의 무결성
  • 데이터의 중복 방지
  • 보안(추상화, 접근권한)
  • 성능 향상
  • 프로그램 수정과 유지 보수 용이

DataBase 와 File System의 차이

자기 기술성

File System

  • .hwp -> 한글
  • .doc -> Microsoft Word
  • .xls -> Microsoft Excel

파일의 확장자를 보고 어떤 프로그램으로 제작되었는지 알수 있음

DB

  • only SQL(RDBMS)

SQL

데이터 관리를 위해 설계된 특수 목적의 프로그래밍 언어

데이터 정의 언어

데이터를 정의한다.

CREATE - DB 개체 정의
DROP - DB 개체 삭제
ALTER - DB 개체 정의 변경

데이터 조작언어

데이터 검색, 등록, 삭제 ,갱신

INSERT - 행, 테이블 데이터 삽입
UPDATE - 테이블 업데이트
DELETE - 특정 행 삭제
SELECT - 테이블 검색 결과 집합

데이터 제어언어

데이터 액세스 제어

GRANT - 작업 수행권한 부여
REVOKE - 권한 박탈

3차 과제 제출 완료

TODO api를 사용해서 할일 목록을 관리하는 TODO 리스트 제작

구성 파일

index.js : 할일을 입력하는 input 창과 추가 button의 EventListner, 그리고 로드 될때마다 할일 목록을 렌더링 할수 있도록 renderTodos를 호출합니다.

index.html : 메인 화면 html파일입니다. 할일을 입력하는 input과 추가 button을 구현했습니다.

request.js : heropyapi에 요청을 보내는 메소드가 위치한 파일입니다. 할일을 생성하는 createTodo, 할일 목록을 불러오는 readTodos 할일 내용을 수정하는 updateTodo 할일 항목을 제거하는 deleteTodo 비동기 메소드를 작성했습니다.

render.js : renderTodos메소드를 모듈화하여 생성한 파일입니다. readTodos로 리턴된 데이터 배열을 바탕으로 엘리먼트를 생성하여 데이터를 추가한뒤 렌더링해주는 메서드 입니다.

profile
개발자 꿈나무

0개의 댓글