김종익교수님 - OS
사용자와 컴퓨터 HW 중간에 끼어 있는 프로그램
사용자가 만든 프로그램을 실행시켜주고,
어떤 문제를 프로그램을 통해 해결하는 것을 좀 더 쉽게 해 주고,
HW를 효율적으로 사용할 수 있게 해 줌
kernal
컴퓨터가 실행되면 계속해서 실행되는 부분
운영체제의 가장 핵심 파트
interrupt
실행되던 정보를 어딘가에 저장하고,
처리하고 돌아왔을 때 다시 실행할 수 있도록 해야 한다.
Interrupt Handling
현재 CPU의 상태들을 저장
interrupt vector가 존재
Storage Structure
- main memory
CPU가 직접 접근 가능한 유일한
휘발성 메모리
- secondary storage
비휘발성 메모리
- hard disks : track, sector 단위로 나누어짐
- solid-state disks(SS)
Caching
데이터를 더 빠른 저장공간으로 옮겨두는 것
Caching
cache replacement 정책
Direct Memory Access Structure(DMA)
CPU의 간선 없이 I/O Device가 데이터를 직접 메모리에 옮겨놓는
Operatind System Structure
- multiprogramming(batch system)
Job Scheduling이 필요
- Timesharing(multitasking)
작은 시간 구간을 나누어
interactive한 컴퓨팅이 가능하다.
여러 프로세스가 동시에 실행될 수 있다.(concurrent) => CPU scheduling이 필요
User mode
Kernal mode
system call이 kermal mode로 바꾸고, 처리가 끝나면 다시 user mode로 변환
타이머 => 타이머 interrupt
이를 통해 user mode, kernal mode가 전환
process management
program counter : 현재 실행 중인 명령의 주소를 가지고 있는
OS Structures
User Interface(UI)
Program execution
I/O Operations
File system manipulation
Communications
Error detection
Resource allocation
Accounting
Protection and security
System call
programming interface
운영체제가 제공하는 함수 형태(API)
응용 프로그램은 system call이 어떻게 구현되어 있는지 알 필요 없음
fork, open, read, socket, ...
interrupt 발생시킴
문현수박사님 - 팀 프로젝트 미팅
Figma 활용 프로토타입 제작
제작한 프로토타입의 일부분입니다. 프로토타입 링크는 보고서에 첨부하겠습니다.
김종익교수님 - DB
primary key
어떤 entity를 유일하게 구분 지어줄 수 있는 속성
entity : 다른 entity랑 구분이 된다.(attribute 값에 의해)
weak entity sets
partial key : 나를 구분해줄 primary key의 일부분을 가지고 있다.
네모 두개 => weak entity set
relation에도 두줄로
entity set을 모두 relation으로 만든다.
normalization of relational model
정규화, normal한 형태로 DB를 만드는 방법
decomposition
정보의 중복 문제를 막기 위해 두 schema로 나누는 것
Normal Forms
BCNF
Third Normal Form (3NF)
코딩테스트 - 원형 큐 구현
k = int(input())
q = [-1 for _ in range(k)]
index = 0
front = 0
rear = 0
def enQueue(n):
global rear
if isFull():
return False
q[rear % k] = n
rear += 1
return True
def deQueue():
global front
if isEmpty():
return False
q[front % k] = -1
front += 1
return True
def Front():
return q[front%k]
def Rear():
return q[(rear-1)%k]
def isEmpty():
if front == rear:
return True
else:
return False
def isFull():
if rear - front == k:
return True
else:
return False
while True:
try:
s = input().split(" ")
result = ''
if s[0] == "enQueue":
result = enQueue(int(s[1]))
elif s[0] == "deQueue":
result = deQueue()
elif s[0] == "Front":
result = Front()
elif s[0] == "Rear":
result = Rear()
elif s[0] == "isEmpty":
result = isEmpty()
else:
result = isFull()
print(str(result).lower())
except EOFError:
break
'SW Academy' 카테고리의 다른 글
[CNU SW Academy] 코딩테스트 가이드 (0) | 2022.12.23 |
---|---|
[CNU SW Academy] 15일차(22.12.21) (0) | 2022.12.23 |
[CNU SW Academy] 13일차(22.12.19) (0) | 2022.12.22 |
[CNU SW Academy] 12일차(22.12.16) (0) | 2022.12.18 |
[CNU SW Academy] 11일차(22.12.15) (1) | 2022.12.15 |