기출 

커널, 쉘 문제 

스케줄링 *** sjf

가상기억장치 특징 **

내,외부 단편화 문제**

 

 

 

준비-> 실행 : 디스패칭 

실행-> 준비 ( time out ) 

실행-> 대기 (블락) 

대기-> 준비 ( wake-up )

 

 

프로세스와 쓰레드 차이 

 

선점 vs 비선점 

선점: 서로 뺏음.( RR, SRT, 다단계 큐) 

비선점 : 하나가 끝날 떄 까지 빼앗지 않음.(FIFO, SJF, HRN, 우선순위)

 

1. 비선점 기법

1) FIFO (First In First Out) = FCFS (First-Come First-Served)

     : 준비 큐에 맨 처음 오는 프로세스를 맨 처음에 실행

       응답시간 차가 적어 예측이 쉬움

       구현은 가장 쉽지만, 효율성이 많이 떨어진다.

2) SJF (Shortest Job First)

     : 대기 중인 작업 중 수행시간이 가장 적은 프로세스에 CPU를 할당하는 기법

       평균 대기 시간 최소화// 각 프로세스의 CPU 요구시간 알기 어려움

3) HRN (Highest Response Ratio - next)

     : SJF 기법의 약점 긴 작업과 짧은 작업의 지나친 불평등 을 보완한 기법

       응답률= (대기 시간+ 실행 시간)/ 실행 시간

4) 우선순위 (Priority)

     : 준비상태 큐에서 대기중인 각 프로세스마다 우선 순위를 부여

       -> 우선 순위가 가장 높은 프로세스에 먼저 CPU를 할당

       우선 순위가 같을 경우 FIFO 또는 SJF를 도입

5) 기한부 (Deadline)

     : 프로세스에게 일정한 시간을 주고 그 시간 안에 완료하도록 하는 기법

 

2. 선점 기법

 

1) RR (Round Robin)

     : FCFS + 선점 방식

       FCFS 기법과 같이 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받음

    //시간을 할당해서 할당시간 종료 후 완료하지 못하면 폐기

       우선순위의 형평성을 위해 타임 슬라이스 or 시간 할당량에 의해 시간 제한을 받음

       - 시간할당량이 클 경우: FIFO 스케줄링 방법과 차이 X

       - 시간할당량이 작을 경우: 문맥교환 오버헤드가 상대적 

2) SRT (Shortest Remaining Time)

     : SJF + 선점 방식

       준비상태 큐에 새로 도착한 프로세스의 실행 시간과 현재 실행중인 프로세스의 남은 시간을 비교, 수행시간이 적은 프로세스에 CPU를 할당하는 기법

3) 다단계 큐 (Multi Level Queue)

     : 프로세스를 특정 그룹으로 분류할 수 있을 경우

       그룹에 따라 각기 다른 준비상태 큐를사용, 큐 사이에 우선순위를 부여하는 기법

4) 다단계 피드백 큐 (Multi Level Feedback Queue)

     : 특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다 단계 큐 기법을 

준비상태 큐 사이를 이동할 수 있도록 개선한 기법, 다양한 특성의 작업이 혼합된 경우 매우 유용

 

예시는 교재 보기. 

알고,리즘 기법. 

 

FIFO LRU, 

 

페이징 - 고정 // 내부단편화 발생

세그먼테이션 - 가변  // 외부단편화 발생

https://m.blog.naver.com/rbdi3222/220623825770

 

단편화( 남은 공간) 

내부 단편화는 메모리를 쓰고 아깝게 남는 공간. 

외부 단편화는 메모리를 쓰지 못하고 조각나 있는 총 공간들. 

 

내부단편화

외부 단편화 

'CS > 운영체제' 카테고리의 다른 글

CPU 구조  (0) 2020.02.22

불대수 

교환 

결합 

배분 

누승 ( A + A = A) 

흡수 ( A+ AB =A)

항등 ( A + 0 = A) 

보간 ( A+ A' = 1)

 

조합 

-반가산기 

-전가산기

-병렬2진가감산기

-디코더

-인코더

-밀티플렉서

-디멀티플렉서

순서 

-RS플립플롭 

-JK

-D 

xor은 0 1 에만 반응 ,xnor은 반대. 어케 외우지..?!

 

 

가상 기억장치 관련 문제 나온걸 본적 있다 .. 

  cisc risc
명령어 
전력소모
레지스터
     

 

기억장치 계층구조 

보조-> 주-> 캐시 -> 레지스터. 

 

  DRAM SRAM
  콘덴서 플립플롭
전력소모
속도 느림 빠름
가격 저가 고가
  주기억장치 캐시메모리

Rom( 읽기만  ) 

Rom-Bios -> Post -> Cmos정보참조 ->부트로더 (RAM에 적재) 

 

 

순서  cpu 주기억 프로그램 사용자
일관처리 1 1 1 1
다중프로그래밍 1 1 n 1
실시간        
시분할 1 1 n n
다중처리 n 1 n n
분산 n n n n

 

트리형 : 트리구조니까 병목현상 발생가능, 허브장비 필요.

버스형 : 각 노드의 고장은 전체에 영향 x , but 통신 채널이 1개라 네트워크 전체 전송을 불가능하게 할 수도 있다.

또한, 터미네이터가 있어서 신호가 되돌아오는 것을 막음.

링형 : FDDI 광케이블로 구성!?

 

 

데이터 전송 기술

(1)

동기 vs 비동기 

동기: 같은 시간 단위를 맞혀서 보낸다. (블록 단위)

비동기: 같은 시간 단위 아니다. ( 문자 단위 )

start and stop 방식이 있음. 

 

(2) 

디지털 --(DSU)--> 디지털 ( 베이스 밴드 ) 

디지털 --(모뎀)--> 아날로그  ( 디지털 변조 : ASK-진폭, FSK-주파수 , PSK - 위상 , QAM - 진폭, 위상 ) 

아날로그 --(코덱)--> 디지털  (PCM : 펄스 부호 변조)

아날로그 --(전화)-->아날로그 

위상 (2위상- 1비트(2^1) / 4위상- 2비트 / 8위상-3비트)

BFS = baud * 주기당 전송 비트수 

암기법 : 

디지털에서 아날로그로 가니 몬뎀?(모뎀..) 

아날로그를 디지털로 바꾸는 코리아텍..(코덱)

아아는 전화지. 

디디는 베이스벤드

 

- PCM : 펄스 부호 변조

표-> 양 -> 부 -> 복 -> 여  "표양이 임부복을 입으니 여자다" 

표본화 : 펄스 신호를 정한다. 

양자화 : 추출한 펄스를 양자화(막대) 한다. 

부호화 : 비트화 한다. 

복호화 

여파화 

정보전송의 다중화

주파수 분할 다중화 FDM // 공간 분할.

채널간 보호대역 필요.

아날로그 형태로 전송 , TV, 라디오 등에 이용. 

 

시분할 다중화 TDM(  동기, 비동기 ) // 시간 분할

//시간분할이란 말 자체가 동기와 비동기를 가진다. 

STDM : 동기식 ( 고정 시간으로 분할하여 사용 )
ATDM : 비동기식( 고정적인 시간으로 나누는 것이 아니기에 시간 슬롯을 동적으로 할당=> 필요시=> 그때그때 쓴다 => 통계적이라고도 한다.) , 전송효율 높다. 

 

코드분할 다중화 CDMA(Code Division Multiplex Access)  // 공간 +시간 분할.

- FDM + TDM

-대역확산이 일어남

-무선디지털 전송방식에 가장 많이 사용 

 

 

OSI 7계층 

물리(리피터) -> 데이터 링크(허브, 브릿지) -> 네트워크(ip, icmp, arp) ->   전송  -> 세션 -> 표현 -> 응용(ftp, http, dns)
(bit)           (프레임-노드,점 간)               (패킷)                 (세그먼트-종단간)     

리피터: 신호 증폭

허브 : LAN에서 DTE가 있는 지점 간에 트리 구조로 연결. 

브릿지 : MAC주소 LAN사이 연결, 망 연결 패킷 중계 및 필터링 장치.

*LAN은 경로설정과는 상관없다. 

게이트웨이 ( 전계층 ): "서로 다른 형태의 네트워크 프로토콜 변환" 

라우터 : "동일한 전송 프로토콜을 사용하는 분리된 2개이상 네트워크 연결 장치". 최적 경로 설정, 패킷 전송 

 

물리 계층 - 비트 

데이터 링크 계층 (MAC, LLC) - 프레임  (문자 지향 방식<BSC> vs 비트지향방식<HDLC>)

노드대노드 전달. 포인트 대 포인트

LLC: 제어역할 (신뢰 -> 동기화, 에러제어, 흐름제어 )

-흐름제어 ( 정지대기, 슬라이딩 윈도)

-에러제어- 4가지 MAC : 프레임 구성 , MAC 주소

 

( 패리티 비트 검사, 블록합block sum check , 순환중복 검사(crc, cyclic redundancy check), 헤밍코드 ) 

- HDLC (flag, address, control, data, frame check sequence ) //전이중 방식 //CRC제어 방식을 씀. 

F-A-C-D-S-F

주소를 잡으면 어떻게 컨트롤할지 알려주고 Data들을 이용하고 S(오류없는지 체크)하고 닫아줘야지. 

S-> I - 정보, S -감독(흐름제어, 에러제어) , U- 링크 - 관리..?

- BSC( Binary Synchronous Communication ) //반이중 방식

 

에러 정정방식 - 4가지

정지 대기 : 반이중

Go-Back-N : 전이중 (순서 있음)

선택적 ARQ : 순서없음, 걍 보내고 오류난거 개별로 또 보냄.

적응적 ARQ : 상황에 따라서 선별. 

 

네트워크 계층 (키워드 : 경로설정, 패킷전달, 제어 x)

패킷 단위 / 4계층에서는 전송 계층이 "패킷"이다. 

경로 설정 프로토콜 방식 

IGP(내부) 

RIP(벨만포드 : "좁은"지역 ) // "거리" 벡터(방향)  

OSPF : (다익스트라: "넓은"지역 ) // "링크"상태: 최단경로(무방향)

EGP(외부)

BGP: 외부게이트웨이 "경계" 

 

전송 계층 "세그먼트" 단위. 종단간 전송

세션 계층 

 

표현 계층

 

응용 계층

인터넷과 TCP/IP(4계층)

응용 ( HTTP, FTP, SMTP, DNP )

전송 ( TCP, UDP ) "패킷단위"

인터넷 ( IP, ICMP, IGMP, ARP, RARP) ip->mac/ARP 

네트워크 접근 계층 ( 이더넷, FDDI, 토큰링 ) + PPP, MAC, LLC 

 

 

(2) IP// 인터넷 

  ipv4 ipv6
  헤더 8bit-60byte 헤더 40 byte
  32bit/4byte 128bit/16byte
  멀봐유? (멀티 , 브로드, 유니 ) 멀? 애유~ ( 멀티, 애니, 유니 )
  체크섬 체크섬 X

* 유니 ( 1:1 ) 애니 ( 1: N )or (1:1) , 멀티( 1: N), 브로드 (1:전부) 

 

ipv4 (네트워크id, 호스트id)

A클래스 0~127  // 0  //255.0.0.0 

B클래스 128~191 // 10 //255.255.0.0

C클래스 192 ~223 // 110 //255.255.255.0

 

ipv6

3가지 호환 기법. 

이중스택 (v4,6 둘다씀) 

터널링 (변환함) 

헤더변환 

 

서비넷 마스크 

사용 이유? B클래스의 경우 6만여개의 호스트 주소를 가집니다. 문제점은 1000개의 주소가 필요하여도 6만개를 써야하기 때문에 낭비 문제가 발생한다. 이를 서브네팅하여 사용률을 높이는 것입니다. 

 

예시 )

128.107.76.0/22

우선, 128이니까, B클래스임을 알수있다. 

255.255.0.0으로 생각. 

뒤에 22는 앞에 1의 갯수를 의미한다. 

11111111.11111111.11111100.00000000 의 형태이다. 

즉, 서브넷 주소는 255.255.252.0이 됨을 알 수 있다. 

예시 )

194.139.10.123/25 

194니까 C클래스임을 알 수 있다.

255.255.255.0의 모양이고 

11111111.11111111.11111111.1000 0000임을알수있다.

 

예시) 

C클래스에서 표현되는 서브넷 마스크 

255.255.255.0/24라면 

255.255.255.0  11111111.11111111.11111111.00000000

255.255.255.192  11111111.11111111.11111111.00000000

 

브로드 캐스팅은? 

 

3)TCP와 UDP의 비교

UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는 비연결형 프로토콜이고 빠른 전송, 일방적으로 전송하고 응답은 필요로 하지 않는다. 영상 스트리밍이 이에 해당한다.

-> 이후에 UDP 응용 계층에서 프로토콜로는 5개 : TFTP, DHCP, SNMP, RTP(실시간 멀티미디어) , DNS등이 있다.  

 

TCP는 신뢰성 보장과 순차적인 전달을 필요로 하는 프로토콜이고 3-way-handshake를 통해서 송수신의 응답을 확인하면서 이루어진다. 

4개 HTTP, FTP, SMTP, 텔넷

포트번호 서비스
TCP 20 FTP 데이터
TCP 21 FTP 제어
TCP 23 텔넷
TCP 25 SMTP
TCP 80 HTTP
TCP 110 POP
TCP 143 IMAP
UDP 53 DNS
UDP 69 TFTP 
   
   

암기법 

20살에 데이트를 헤서 21에 제어했음. 

23살에는 군대에서 텔넷을 했고, 

25살에는 메신저나 메일로 연락을했음. 

SMTP 암기법 ( sns, mail, tv, pc ) ok?

송신자 단말기( SMTP ) -> 전송중 메일서버( SMTP) -> 수신자 단말기(POP,IMAP)

송신 SMTP ,서버 SMTP ,수신 POP3 IMAP

 

tcp - 체크섬 필수
udp - 체크섬 선택 

 

 

(4)

FTP란? File Transfer Protocol의 약자로, 원격 서버에 파일을 주고 받을 때 사용하는 인터넷 통신 규약입니다.
서버와 클라이언트가 파일 전송을 위한 프로토콜이며, Port 20: 전송, Port 21: 제어의 역할을 한다. 

 

 

회선 교환 및 축적 교환.

회선( 아날로그, 전화 ) -> 실시간 -> 저장 x 

축적( 디지털,  메세지 교환 방식 , 패킷교환 방식 )

메세지 교환방식 : 저장 -> 실시간x -> 무거워짐 (문제) ->

 

패킷교환방식 등장 

-가상회선 (1개회선) -경로를 가짐 -순서를 가짐- 안정적

-데이터 그램(비연결) - 순서없이 막 가서 조립 - 비연결방식 - 고속 -(PAD)

 

 

LAN //(1~2계층에서 사용) 반송파 감지 ->MAC에서 반송파 감지 않는 것은 FDDI '이중링'이라서

802.2 LLC

802.3 CSMA/CD (충돌 탐색 ) // 기가빗 이더넷.

802.4 BUS

802.5 Ring
802.11 무선 렌, 와이파이 // CSMA/CA(충돌 회피)

802. 15 무선 펜 

802.15.1 블루투스 

802.15.4 zig bee 

802.16 Wibro // 2.3khz

 

NAT의 역할은? 

 

 

기타 

RFID

- 무접촉 칩( 무선 주파수 ) 

- 여러개의 태그 사용( 하나도 가능) 

- 반영구 

- 태그, 안테나, 리더기, 서버로 구성. 

퍼셉트론  "인공신경망, 딥러닝 기반 알고리즘" -> 뇌의 사례 적용 -> 패턴 인식 기계. 

빅데이터 -> 하둡-> 앱리뷰스(고속처리), 하둡분산파일시스템. 

NoSql - SQL형식 아님, 비관계형 DB처리. 

 

 

기밀성 : 스니핑, "비밀"

가용성 : 사용자 "권한", 서비스 거부 공격

무결성 : 수정이 불가능 하도록.!  

 

 

에러 검출 방법, 

( 패리티 비트 검사, 블록합block sum check , 순환중복 검사(crc, cyclic redundancy check), 헤밍코드 ) 

 

 

* 기출 

디자인 패턴의 의미? 사용자 ~~~ 

결합도, 응집도. 

자료 사전, 

품질 표준. 

 

소프트웨어 공학 

전체 구조 ( 계획 -> 분석 -> 설계 - > 구현 -> 테스트 -> 인수/유지보수 )  
1. 계획 : 비용 계획(COCOMO, 기능점수) , 일정계획(CPM), 조직 계획
2. 분석 : 기능적/ 비기능적 분석  
           유형 A : 구조적 분석( 자료흐름도, 자료사전, 소단위 테스트) 
           유형 B : 객체지향적 분석( USE-CASE Diagram )
3. 설계 :                         상위 설계 -------->  하위 설계 
유형 A (구조적설계)     상)fan-in , fan-out  하) 모듈(결합도)     
유형 B (객체지향적설계)     디자인 패턴            class( 응집도)  
                                  UML-sequence
                      ( 대표적 class diagram이 있음)   
4. 구현  
유형 A : 구조적 C언어.
유형 B : 객체지향적 Java. 
5. 테스트 ( *유형 A,B 둘다 해당 )
정적 -> 동적( 블랙 박스 , 화이트 박스)
*단위테스트 -> 인터페이스테스트 -> 시스템테스트 -> 인수테스트 .
*형상관리 , 품질관리
6. 인수/ 유지보수
유지보수 ( 수정, 적응, 예방, 완전 ) 

 

프로젝트 관리 3대 요소 : 사람, 문제, 프로세스

* SW개발 중 가장 비용이 많이 드는 곳: 유지 보수 

 

계획 단계

비용 면

1. LOC 기법 - 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정
2. COCOMO 기법 - 개발할 소프트웨어의 규모를 예측한 후 이를 소프트웨어 종류에 따라 다르게 책정

 

일정 계획면, 조직 면 

 

1. 브룩스(Brooks) 법칙 : 진행 중 새로운 인력을 투입 시키면 더욱 지연되고 혼란을 가져온다.
2. PERT/CPM : 최단시간 내 계획 완성을 위한 프로젝트 일정 방법

3. 

 

품질 표준. 

 

1. 정확성(Correctness) : 사용자의 요구한대로 충족시키는 것. 
2. 신뢰성(Reliability) : 정확하고 일관된 결과를 얻기 위해 요구된 기능을 오류 없이 수행하는 정도.

3. 효율성 : 요구되는 기능을 수행하기 위한 필요한 자원의 소요정도. 

 

분석 단계

1. 럼바우(Rumbaugh) 방법 : 객체 모델, 동적 모델, 기능 모델
2. 부치(Booch) 방법 : 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 분석 방법

 

럼바우. 

1. 객체 모델 : 정보 모델링이라고도 하며, 객체 관계를 객체 다이어그램으로 표현한 것.
2. 동적 모델링 : 상태도를 이용하여 시간의 흐름에 따른 동적인 행위 표현
3. 기능 모델링 : 자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리과정 표현

구조적 분석 (C)

자료흐름도(DFD)
- 요구사항 분석에서 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법
- 프로세스 : 원
- 자료 흐름 : 화살표
- 자료 저장소 : 두 줄
- 단말(정보의 생산자와 소비자): 네모

자료 사전(DD)

- 자료 흐름도 상에 있는 자료를 더 자세히 정의하고 기록한 것이며, Meta Data라고 한다.
- = : 자료의 정의
- + : 자료의 연결
- () : 자료의 생략
- [ | ] : 자료의 선택 또는 or
- { } : 자료의 반복
- * * : 자료의 주석

설계 단계

결합도(Coupling)  - 결합하는 절차가 있고 응집하는 객체가 있다. / 결석하는 자슥 제외시키고 공부나 해 
- C 언어라고 생각하면 좋음 / 모듈 간의 결합하는 정도 C니까 절차지향 즉, 낮아야 좋다.
- 자료 < 스탬프 < 제어 < 외부 < 공통< 내용 순으로 결합도가 높다.
 

응집도(Cohesion)
- Java라고 생각하며 좋음 / 모듈간 응집도가 높으면 좋다.
- 우연적 < 논리적 < 시간적 < 절차적 < 교환적 < 순차적 < 기능적 순으로 응집도가 높다.

 

테스트 단계 

화이트 박스 테스트  (코드)
- 기초 경로 검사
- 조건 검사
- 루프 검사
- 데이터 흐름 검사

 

블랙 박스 테스트 (겉)

- 동치 분할 검사 : 입력 자료에 초점을 맞춰 검사 사례를 만들고 검사하는 방법
- 경계값 분석
- 원인 - 효과 그래프 검사
- 오류 예측 검사
- 비교 검사 

 

테스트 단계 : 단위 -> 인터페이스 -> 시스템 -> 인수 테스트 ( 알파: 개발자 , 베타: 개발자 사용자 )

 

소프트웨어의 재사용

- 이미 개발된 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것
- 문제점 : 새로운 방법론 도입하기 어렵다, 재사용을 위한 관리 및 지원이 부족하다, 기존 소프트웨어에 재사용 소프트웨어 추가 어려움

소프트웨어 재공학

- 기존에 있던 소프트웨어를 파기하지 않고 새로운 요구에 맞도록 기존 시스템을 이용하여 기존 소프트웨어를 수정 보완하거나 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
- 역공학 : 기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 과정

 

CASE
- 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화한 것
- 소프트웨어 생명 주기의 전체 단계를 연결해 주고 자동화해 주는 통합된 도구를 제공해주는 기술
- 이점 : 개발 기간 단축 및 비용 절감, 품질 향상, 유지보수 용이, 생산성 향상, 재사용성 향상 등.

 

소프트웨어 생명주기 모형

1. 폭포수 모형
 - 개발 순서 : 타당성 검토 -> 계획 -> 요구 분석 -> 설계 -> 구현 -> 시험 -> 유지보수

2. 프로토타입 모형
 - 개발 순서 : 요구 수집 -> 빠른 설계 -> 프로토타입 구축 -> 고객 평가 -> 프로토타입 조정 -> 구현

3. 나선형 모형 (대규모에 적합) 
 - 계획 및 정의 -> 위험 분석 -> 공학적 개발 -> 고객 평가

'CS > SW공학' 카테고리의 다른 글

SW공학 흐름도  (0) 2020.01.10

SQL문 

sql문에서 자료형이 아닌것은? 

char, string, integer, DECIMAL  정답은 string이다. 

where && 안씀. 

create view as 

group by + having 

insert into 

update 테이블 set

delete from 

 

 

create table 시 

check절에는 update없다.

foreign key : no action / casecade / set null / set default (4개) 필요하다. 

 

조인의 이해 

 

INNER 조인 

=> " 조건에 부합하는 것만 뽑아준다 "

OUTER 조인

- LEFT JOIN

- RIGHT JOIN 

=> From  A테이블 left join B테이블

 

A테이블은 전부 다 보여준다.

 

그렇다면 장점이 뭐냐~? 우선, 가독성이 좋습니다. inner 조인으로도 select문을 두번써서 만들 수 있지만, 가독성이 떨어진다.

또 데이터베이스로 부터 받아온 데이터를 for문을 여러번 돌릴필요없이도 출력이 가능해지기 때문에 자바에서도 코드가 간결해지는 장점이 있습니다. 

 

제 경험에 의하면, 이미지 테이블 과 댓글 테이블 

이 둘을 ID로 left 조인을 하면 이미지를 포함한 댓글과 이미지를 포함하지 않은 댓글이 모두 출력이 됩니다. 

이미지를 포함하지 않은 칼럼은 ifnull을 통해서 0으로 바꿔주고 내보낼 수 있다.  

// ifnull(id, false) as X

 

 

 

파일시스템의 불편함이 데개논이터베이스를 만듬 ( 아래 4가지 특징이 생겨남)

ex) 응용 프로그램 = 전용 파일 ( DB이전) 이 있어야함. 데이터 종속성이 높다 : 파일구조 변경시 프로그램 구조를 바꿔야함. 

DBMS는 보조기억장치에 저장. 

1. 데이터베이스 특징=> 실시간 접근성, 동시 공용, 내용에 의한 참조(값), 계속 변화. 

1-1. DB정의 : 통합, 저장 , 운영( 조직에서 ) , 공용( 공동 소유) 


1-2. 데이터 베이스 설계 
요구 사항 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 ->구현 

(1) 개념적 설계 :개념스키마, 트랜잭션 모델링, E-R 다이어그램 모델 (개체-모델) //추상적인 단계 (모델링 ) 

*E-R 다이어그램 -개체(ㅁ) : 현실 세계의 대상체 / 속성( O ) : 개체를 구성하는 최초의 논리적 단위 / 

(2) 논리적 설계 :목표DBMS에 맞는 스키마 설계 (관계형, 그래프형, 트리형 등등 ) , 트랜잭션 인터페이스 설계. // 실제 DB 설계 단계 

(3) 물리적 설계 :물리적 구조의 데이터 변환(응답시간, 저장공간의 효율화, 트랜잭션 처리도,물리적인 CPU나 메모리의 활용) // 효율화, 모델화.

 

(4) 구현 : DDL로 DB생성. 

지연 갱신 vs 즉시 갱신 

지연 갱신 : commit 될 떄까지 갱신 내용을 디스크 저장 x . ( redo만 있으면 됨)

즉시 갱신 : commit 할 때 마다, Os에 디스크에 저장할 것을 요구한다. (undo, redo ) 

*checkpoint의 기점이 중요하다. : 옜날꺼를 redo하지 않기 위해서 쓴다. checkpoint 이후에 꺼만 처리하면 된다.

undo : commit 되지 않은 트랜잭션의 실행을 취소함. 

redo : commit 된 트랜잭션의 회복을 위해서 재실행 함( 회복) 

checkpoint 이전에 commit된건 No operation 

checkPoint 전에 시작해서  checkpoint 이후에 commit된거 redo. 

 

 

 

*스키마란? DB 구조의 정의, 제약 조건을 명세해놓은 메타데이터의 집합

외부, 개념, 내부 스키마가 있다.

외부 스키마 = 사용자 뷰 ( 여러개 존재, 각 개인의 입장에서 필요로 하는 부분 정의)

-> 저장된 데이터와 그들 간의 관계를 기술한다.
개념 스키마 = 전체적인 뷰 (논리적인 관점에서 전체 데이터 구조를 정의 , 외부를 통합한다. )

//전체적인 논리 구조로 접근 권한이나 보안 및 무결성 규칙에 관한 명세를 정의

내부 스키마 = 물리적인 저장장치. (실제 데이터베이스를 저장하기 위한 스키마)

 

 

2. 정규화 ( 이상을 제거하고 중복을 최소화 하기 위해서 테이블을 분해하는 과정이라고 한다)
1정규형은 도메인 원자값이라는 조건을 충족시키기 위해서
반복을 제거하고 식별자(키)로 구분 가능하도록 테이블을 분해한다.

( 비정규형 -> 1정규형 : 도메인 원자값 )

2정규화는 1정규화를 수행하고 나서 식별자인 기본키가 복합키로 이루어질 수 있는데, 
그 중 하나의 키로 부분적으로 함수 종속이 있을 수 있고, 이때 이상현상이 발생하는 것을 막기 위해서 
완전 함수 종속만 이루어지도록 테이블을 분해하는 것을 말합니다. 
( 1정규형 -> 2정규형 : 부분적 함수종속 제거 ) 


3정규화에서는 기본키에서 발생하는 것이 아닌 그 외의 키가 이행적으로 함수 종속이 일어날 때, 발생하는 것으로 
이를 제거해주는 것을 의미합니다. 
( 2정규형 -> 3정규형 : 이행적 함수 종속 제거 )

Y가 X에 함수종속일 때는 X->Y 이렇게 써준다. 

 

0->1 도

1->2 부 

2->3 이

3->B 결

B->4 다

4->5 조


3. 옵티마이저란? SQL을 가장 빠르고 효율적으로 수행할 수 있게 하는 DBMS의 내부 핵심 엔진이다. 

4. 프로세스와 쓰레드 차이? 
프로세스는 연속적으로 실행되고 있는 컴퓨터 프로그램을 말함. 
쓰레드는 프로세스 내의 실행되는 '흐름의 단위'(하나의 프로세스에 하나 이상의 쓰레드를 가질 수 있음.)

 

5. 관계 대수 vs 관계 해석 

ㅇ 관계 대수 : 셀렉션( 수평) , 프로젝션 (수직) , 절차적 !!!! 

피연산자, 결과 모두 릴레이션  
일반 집합 연산 + 순수 관계 연산
시그마 = 수평적 부분집합 = Selection '

 

ㅇ 관계 해석
수학의 프레디킷 해석에 기반  , 비절차적 !!!
sql 문 
튜플 관계 해석 + 도메인 관계 해석
릴레이션 정의
* 관계 해석과 대수는 관계 디비를 처리하는 기능과 능력면에서 동등하다.

 

트랜잭션이란? 논리적 기능을 수행하기 위한 하나의 작업 단위이다. 

트랜잭션이란 질의(query)를 하나의 묶음 처리해서 만약 중간에 실행이 중단됐을 경우,
처음부터 다시 실행하는 Rollback을 수행하고, 오류없이 실행을 마치면 commit을 하는 실행 단위를 의미합니다.
즉, 한 번 질의가 실행되면 질의가 모두 수행되거나 모두 수행되지 않는 작업수행의 논리적 단위

트랜잭션 (4가지) //원자성(회복) ,지속성(회복), 격리성(병행제어 ) ,일관성(병행제어 )
- Atomicity는 트랜잭션의 연산이 DB에 모두 반영되던지 전혀 반영이되지 않던지 둘중에 하나만 수행해야한다.(원자성) - yes or no // commit, rollback이 일어남 
Consistency는 트랜잭션이 성공적으로 완료된 후에는 언제나 일관성 있는 DB상태로 변환되어야한다.(일관성: 처리 후에 구조나 형식의 변경이 없다.)

Isolation은 수행중인 트랜잭션이 완전히 완료되기 전에는 다른 트랙잭션에서 수행 결과를 참조할 수 없다.(독립성 : 동시에 작업을 수행하는 경우가 없어야한다. )

Durablility는 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.(영속성)

병행 제어 기법 ( 특징 : 공유 최대화 / 일관성 유지 / 응답시간 최소화 / 활용도 최대화 ) 
로킹: 하나의 트랜잭션이 데이터를 엑세스하는 동안 다른 트랜잭션이 그 데이터 항목을 엑세스 할 수 없도록 잠궈두는 기법이다. 

로킹 단위가 작다( 잠궈두는 시간이 작다) -> 일정시간에 여러 애들이 접근이 많아져서 오버헤드 발생가능함, 하지만 병행 수준 높아짐!


로킹 단위가 크면 로크 수가 적어서 관리는 쉽지만, 병행 수준이 낮아짐!

DDL : Drop , Alter, Creat으로 이루어짐. (정의어) 
DML : insert, update, delete, select. (조작어)
DCL : Grant, Revoke. // 데이터 무결성/ 보안(가용성) // 데이터 회복 및 병행제어가 이루어짐. 

 

UML엔 use case , sequence, class 가 있음. 

무결성이란 데이터의 정확성, 일관성, 유효성을 유지하는 것을 말한다. 데이터의 무결성을 유지하기 위해 DBMS에서는 크게 4가지 종류로 구분한다.

후보키 : 유일성 o , 최소성 o , 부분집합. 

대체키 : 기본키를 제외한 기본키가 되는 놈들

슈퍼키 : 유일성 o, 최소x

개체 무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않는다. ( NULL,중복값 X ) 
참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지한다. (외래키, 동일)
도메인 무결성 : 테이블에 존재하는 필드의 무결성을 보장하기 위한 것으로 올바른 데이터가 입력됬는지를 체크하는 것이다.
고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우 그 속성값은 모두 고유한 값을 가진다. 같으면 안된는 것
NULL 무결성 : 특정 속성값에 NULL이 올 수 없다는 조건이 주어진 경우 그 속성값은 NULL이 될 수 없다는 제약조건
키 무결성 : 한 릴레이션에는 최소한 하나의 키가 존재해야하는 제약조건

Q. 무결성을 유지하려는 이유가 무엇인가요?
A. 무결성이 유지가 되어야 DB에 저장된 데이터 값과 거기에 해당하는 현실 세계의 실제값이 일치하는지 신뢰할 수 있기 때문이다.



 인덱스란?
- 데이터에 빠르게 접근하기 위해서 목차를 만들어 놓은 것을 인덱스로 알고있습니다. 
목차의 역할처럼 항상 정렬된 상태를 유지합니다. 인덱스에서 데이터를 찾은 다음에 그 테이블로 맵핑된 곳을 가서 꺼내오는 형식,. 
- 인덱스를 마구잡이로 쓰면 안됨! select는 빨라져도insert나 update는 느려진다. 
정렬이 된 상태로 저장이 되어야 하기 때문에 !
여러 가지 인덱스가 있는 흔히  B-tree ( balance –tree ) logN으로 복잡도를 줄여서 
효율성을 높인 것으로 알고 있습니다. 

뷰 ( 독자적 인덱스 x

- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 부터 유도된 가상 테이블. 

- 물리적으로 존재하지는 않지만, 사용자에게는 있는 것처럼 간주됨. 

특징

- 가상 테이블이기 때문에 물리적으로 구현되지 않는다. 

- 데이터 접근 제어로 보안을 제공 

- 데이터의 논리적 독립성 을 제공 

- 뷰는 삽입, 삭제, 갱신에 제약이 따름. (create, drop가능, alter 불가능) ,  order by 못씀~ group by 사용가능  

- 독릭접인 익덱스를 가질 수 없다. 

- 뷰의 정의를 변경할 수 없다. 

 

시스템 카탈로그  

- DBMS 내에 특별한 테이블 집합체 

- 내용 검색 용이 ( 누구나) 

- 자료사전, 메타 데이터라고 함. 

 

분산DB

- 위치투명성

- 중복 투명성 : 중복의 여부를 모르고도 처리가능 (= 복제 투명성)  

- 장애 투명성 : 장애가 발생해도 영향 x

- 병행 투명성 : 다수의 트랜잭션이 발생해도 영향 x

 

 

select에서 isnotnull 쓰는거 

 

교착상태 

점유대기 부정 

- 모든 자원 할당하여 프로세스 대기를 없애거나, 점유되지 않은 상태에서 지원요구

비선점 부정 

- 점유하고 있는 프로세스가 다른 자원 요구시 점유하고 있는 자원 반납. 

환형대기 부정 

-한 방향으로만!! 

상호배제는 부정할 수 없다. 

 

 

 

클라우드 

laas - 서버를 운영하기 위해서 서버 자원, IP, Network Storage, 전력 등 인프라를 구축하기 위한 여러가지가 필요하다. laas는 이러한 것들을 가상의 환경에서 쉽고 편하게 이용할 수 있게 서비스 형태를 제공한다. paas,saas 기반이 되는 기술.

paas - 개발자가 씀 , 안정적인 플랫폼(환경)에서 응용프로그램을 개발 할 수 있는 API까지 제공하는 형태 

saas - 깔지 않고 가상서버에서 깔려진 프로그램 쓸 수 있다. ex) 사용자들이 쓰는 이 시스템이 어떻게 동작하는지 알 필요 없다.

 

참조 무결성 - 외래키, null값도 허용된다. 

 

리팩토링

리팩토링(Refactoring)은 소프트웨어를 보다 쉽게 이해할 수 있도록 만드는 작업입니다. 이해하기 쉬운 코드가 수정하기도 쉽기 때문에 수정하기 쉬운 코드를 만든다는 또 하나의 목적 역시 자연스럽게 달성됩니다. 리팩토링은 들어가는 리소스를 최소화하기 위해서 외부 동작의 변화 없이 소프트웨어의 구조를 바꾸는 것을 중심으로 진행이 됩니다.  

 

온라인 플랫폼을 통해 투자자로부터 모집한 자금을 차입자에게 공급하는 형태의 대출사업

 

특징:

1. 은행의 금융상품보다 높은 투자수익을 얻을 수 있다.

2. 대출 실행에 오랜 시간이 소요된다.

3. 신용등급에 영향없이 대출이 가능하다.

4. 상대적으로 낮은 금리로 대출이 가능하다.

 

 

'CS > 디지털상식' 카테고리의 다른 글

레디스(관심사 분리)  (0) 2020.04.03
DSS, OLAP, OLTP, DW  (0) 2020.02.25
빅데이터  (0) 2020.02.25
어셈블리어, 컴파일러, 인터프리터  (0) 2020.02.22

 

 

'CS > SW공학' 카테고리의 다른 글

SW공학_CS( 전체 틀 )  (0) 2020.01.15

+ Recent posts