binary search O(n) 빅오 개념 -> 자바스크립트로 포팅 자료구조는 그림으로 시작해서 그림으로 끝난다
compiler vs interpreter컴파일러 언어 / 인터 프리터 정의적 차이
process/ thredad (multithreading) ,race conditon , mutual exclution(상호배제) 아마오늘?
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
절차지향 , OOP
Network
알고리즘,자료구조 앞으로
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
1교시
linear search t(n) = n
binary search의 t(n) = log(2)n
1/2씩 비교해야될 데이터가 줄어들고, (1/2)^k =1
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
2교시 gcc - heap fbstring (short - stack long - heap) -유투브 fbstring 메모리 레이아웃
왜 스택은 빠르고, 힙은 느린가?
메모리 계층 (레지스터/캐쉬/메모리/하드디스크) speed 빨라짐 capacity 적어짐
메모리 레이아웃 (메모리3층을 따로 가져오는것 세그멘테이션)
1.O(1) : 상수시간
2.O(logn):로그시간
3.O(n) :선형시간
4.O(n log n) :선형 로그시간
5.O(log^2) :지수 시간
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
1.os -> job scheduling -> secheduler (context switching )
process status(프로세스 상태)
-> thread -> mulitithreding
2 concurrency programming(동시성 프로그래밍) -> single thread, non blocking concurrency
multithreading (cpu-bound) | Asynchronous I/o(i/o bound) (연산을 서버사이드에 맡겨, 서버에사이드에서 가져온것을 헤비연산xx)
race-conditio / dead rock |
프로그램과 프로세스의 차이
-program(image)
->"하드 디스크"에 저장되어있는 "하나"의 이미지 (image name 한개)
-process
->"메인 메모리에 올라와서" 실행을 시작한 프로그램 (메모장 여러개, notepad 여러개)
|-notepad.exe pid 54 | 리눅스 -pid 0부터 1씩 늘어가면서
|-notepad.exe pid 55 | 윈도우 -랜덤하게
*프로세스 status
프로그램 클릭 ->
create만, (러닝 xx) :프로세스가 생성되었다(메모리에 올라왔다) ->
waiting (Queue) ->줄서기
running(cpu할당, 실행)
blocked
terminated
중요 alrorithm 1) priority algorithm , 2) round-robin
core 2개(cpu) , process 5개
선점형 스케줄링 preemptive scheduling :
-> 새치기가 가능하다
비선점형 스케줄링 non-preemptive scheduling:
->새치기 절대금지
context switching
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
프로세스 vs 스레드 (실행 흐름)
실행흐름 - 인스트럭션(기계어)의 나열
32bit 컴퓨터기준 , os가 프로세스 하나당 4기가를 할당(virtual address space ) VAS 가상 주소 공간
USER 2기가 , KERNAL 2기가
multi processing - 여러개의 실행흐름을 돌리고, 각자 다른 공간을 갖고 있고 서로 공유해야될 데이터를 IPC를 통해서 전달하고, 이 데이터들을 shared resource
☆☆☆☆concurrency (동시성) program , 동시에 여러개의 실행 흐름이 필요하다
thread는 process에 포함된다
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
gil ( global interpreter lock)
concurrency programmin동시성 프로그래밍 vs parallel programming 병렬 프로그래밍
하드웨어 1개 필요 cpu -> th1, th2, th3 single core multithreading
하드웨어가 2개 이상필요 cpu 1 cpu 2 -> task 1/2 씩 multicore multithreading
multithreading이 좋지 않을떄
shared resource가 없어야됨 x 있으면 멀티스레드 안좋음 (race condition) 전역변수
둘 이상의 스레드가 동시에 접근해서는 안되는 공유 자원, 문제가 발생해서 상호배제로 해결
mulithread는 cpu- bound랑, i/o 바운드단을 나눠서 작업을하는데
자바스크립트는 Asynchronous i/o=(내부 single thread 당연한것이다)는 i/o바운드 만할 수 있다 ( 아무떄나 쓸 수 있는게 아니고, 그전에 있었던 것을 바꾼것)
☆☆☆Asynchronous i/o + co-routine 나중에 공부
'공부 > TIL' 카테고리의 다른 글
네트워크, 퀵소트, isertion, selection (0) | 2019.04.25 |
---|---|
클래스, 버블소트 , 네트워크 (0) | 2019.04.24 |
함수 (0) | 2019.04.22 |
SASS (0) | 2019.04.21 |
파이썬 기초 (0) | 2019.04.20 |