💽 디지털 공학 개론

부울 대수(Boolean Algebra)

  • 부울 대수
  • 부울 대수에 근거하여 표현되는 부울 함수의 구성 요소들
    • 2진 변수(0,1)
    • 연산자
      • 부울 합
      • 부울 곱

부울 연산의 표현

  • 부울 보수(Boolean complement)
    • 인버터로 구현
  • 부울 덧셈(Boolean addition)
    • OR 게이트로 구현
    • 입력 변수의 수에 따른 함수의 표현
      • 2-변수 OR 함수: F2=A+B
      • 3-변수 OR 함수: F3=A+B+C
      • 4-변수 OR 함수: F4=A+B+C+D
  • 부울 곱셈(Boolean multiplication)
    • AND 게이트로 구현
    • 입력 변수의 수에 따른 함수의 표현
      • 2-변수 AND 함수: F2=AB
      • 3-변수 AND 함수: F3=ABC
      • 4-변수 AND 함수: F4=ABCD
  • 기타 부울 함수들
    • NOR 함수: F=(A+B)'
    • NAND 함수: F=(AB)'

💻 마이크로프로세서

LED 컨트롤

  • 링 카운터 만들기
  • 바이너리 카운터(Binary Counter) 만들기
  • 루프를 이용한 알고리즘
    • 바이너리 링 카운터 소스
    • operator를 이용한 코드
    • array를 이용하는 방법
    • array 및 pointer를 이용하는 방법
    • 8개의 LED를 왕복하는 코드
    • 랜덤하게 움직이는 LED
  • 시간 강제지연
    • CPU가 임의의 명령어 수행
    • 타이머 인터럽터
    • GNU에서 지원하는 강제 시간 지연을 위한 두 가지 함수
      • _delay_ms()
      • #define F_CPU 16000000UL
    • delay.h 라이브러리 헤더 파일

7-Segment 컨트롤

  • 랜덤하게 움직이는 LED
    • 7-Segment를 이용한 A->B->C->D 출력

💾 시스템 프로그래밍

리눅스 시스템 프로세스

  • 프로세스
    • 프로세서
    • 프로그램
  • 프로세스의 부모/자식 관계
  • 프로세스의 번호(PID)
  • 프로세스의 종류
    • 데몬 프로세스
    • 고아 프로세스
    • 좀비 프로세스

리눅스 시스템 프로세스 구조

  • 프로세스의 구조
  • 메모리에 적재된 프로세스의 구조
    • 스택(stack)
    • 빈 공간(free area)
    • 힙(heap)
    • 데이터(data)
    • 텍스트(text)
  • 프로세스 상태 변화
    • 사용자 모드
    • 커널 모드
    • 인터럽트
    • 스케쥴링
    • 입출력 대기
    • 실행 대기
    • wake-up
    • 수면 중

📠 운영체제

병행 프로세서

  • 병행 프로세서
    • 독립적 병행 프로세스
    • 협동적 병행 프로세스

임계 구역

  • 임계 구역
    • 자원 사용 시, 경계 설정 >> 영역 제한

상호 배제

  • 상호 배제
    • 공유 자원 접근 제한
  • 소프트웨어적 구현 방법
    • 두 개의 프로세스 기준
      • 데커(Dekker) 알고리즘
      • 피터슨(Peterson) 알고리즘
    • 여러 개의 프로세스 기준
      • Lamport의 제과점 알고리즘(Bakery Algorithm)
      • Dijkstra의 N-process 상호 배제
  • 하드웨어적 구현 방법
    • Test And Set 기법
    • Swap 명령어 기법

동기화 기법

  • 세마포어(Semaphore)
    • P: wait
    • V: wake-up
  • 모니터(monitor)
    • wait / signal

📺 전산 개론

프로그래밍 언어의 번역기

  • 프로그래밍 언어의 개념
    • 프로그래밍 언어의 계층
      • 하드웨어
      • 기계어
      • 어셈블리 언어
      • 고급 언어
      • 자연어
    • 저급 언어(Low Level Language)
      • 기계어
      • 어셈블리어
    • 고급 언어(High Level Language)
      • 언어 번역 프로그램
      • 컴파일러
      • 인터프리터

프로그래밍 언어의 역사와 구조

  • 프로그래밍 언어의 역사
  • 프로그래밍 언어의 종류
    • 절차적 언어
    • 객체지향 언어
    • 선언적 언어
    • 함수형 언어
  • 4세대 프로그래밍 언어
    • 제 1세대: 기계어
    • 제 2세대: 어셈블리어
    • 제 3세대: 고수준 프로그래밍 언어
    • 제 4세대: 초고수준 프로그래밍 언어
      • 인공 지능 언어: LISP, Prolog
      • 웹 문서 작성: HTML, XML
      • 사용자 인터렉션: JavaScript, Perl, Ajax
  • 프로그래밍 언어의 구조
    • 프로그래밍은 세 가지 유형의 문장
      • 선언문
      • 명령문
      • 주석
    • 변수와 자료형(Data Type)
      • 정수형
      • 실수형
      • 문자형
      • 부울형
    • 행렬(Array)과 스트럭쳐(Structure)
    • 리터럴(Literal)과 상수(Constant)
    • 배정문(Assignment statement)
    • 제어문
      • 구조적 프로그래밍(Structured Programming)
      • 조건문: if, switch
      • 반복문: while, for
    • 프로시저(Procedure)와 함수(Function)
      • 모듈화 프로그래밍(주 프로그램, 서브 프로그램)
      • 전역 변수와 지역 변수
    • 매개변수(Parameter)의 값 전달 방식
      • 형식 매개변수(Formal Parameter)
      • 실 매개변수(Actual Parameter)
      • 값에 의한 호출(Call by Value)
      • 참조에 의한 호출(Call by Reference)
  • 프로그래밍 언어의 컴파일 과정
    • 렉시컬 분석(Lexical Analysis)
      • 토큰(Token)
    • 구문 분석(Syntax Analysis)
      • 터미널(Terminal) / 논터미널(Nonterminal)
    • 프로그래밍 언어의 모호성
      • 모호 문법
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글