inblog logo
|
Coding's note
    computer basics

    운영체제

    이소연's avatar
    이소연
    Aug 05, 2024
    운영체제
    Contents
    운영체제stream쓰기버퍼패킷스트림보조스트림 성격os가 data 받을 때 app 1,2 동시 사용할 때flush보조스트림성격TCP스위칭패킷(바디, 헤더)IPLAN통신-v : tcp/udpTCP스위칭패킷(바디, 헤더)
    15장
     

    운영체제

    컴퓨터는 3가지 레이어(층)으로 나뉜다.
    notion image
    input/output은 Application 입장에서 위의 그림은 skip해도 됨. 정확하게는 아래 참조
     
    💡
    프로그램을 실행하면 프로세스.
    notion image
    so, byte 흘러가는 stream = 8bit가 흘러가는 stream
    💡
    Application 영역 stream : byte stream
    notion image

    stream

    = 끝이 없는 byte 흐름
     
    stream에 데이터가 들어오면 이런 식으로 쌓임
    notion image
    but 이렇게 다 차면 이런 식으로 늘어남
    notion image
    ⇒ 끝이 없는(무한대의) byte 저장공간
    ex) 흘러가는 송유관(끝이 없는)
     
    data 공급될 때 예를 들어 1초에 1개씩 가능하고 그게 딱 맞으면 okay.
    but 컴퓨터는 이렇게 되지 않음. 다양한 원인(프로그램, 스레드 등)때문에
    data 연속적으로 흘러갈 때 여러 이유로 6s 걸릴 수 있음
    ⇒ 쌓이면 버려짐-v
    ⇒so 버퍼가 필요함
     
    버퍼는 소비가 공급보다 빠를 때 혹은 느릴 때 딱 안 맞을 때 생김
     
    공급이 소비보다 빠를 때, 느릴 때 딱 안 맞을 때 버퍼가 생김
     
    채팅인 경우 보조스트림 정할 수 없음. ->if 끝을 정했다면, 예를 들어 50byte로 정했다면 50byte이상은 못적어.그리고 문자를 적게 적을 때면 낭비가 생김 => So, 보조스트림은 아래와 같이 만듦
     
    보조스트림
    ㅤ
    ㅤ
    ㅤ
    ㅤ
    버퍼가 되면 특이하게 작동함.-v
    통신 시 배열처럼 3,4는 안됨.
     
    예를 들어 버퍼는 Hello(5글자)가 들어오면 O는 보조 Stream 다 차서 Stream물 길에 갇혀있다.
    notion image
    다 찼으니 H 소비
    notion image
     
     
    ⇒ H OS소비 ⇒E 소비
    notion image
    H 소비하자마자 버퍼에 O가 찬다.
    notion image
    ⇒ 계속 이런식으로 Ing ⇒…
    ⇒보조스트림이 아래와 같이 비게 됨.
    notion image
     
    이런 식으로 파일을 쓰면 (다 차면) 한 개씩 소비하고 다음 거 채워지는 식으로 하면 문자 길어도 받을 수 있다-v
     
    💡
    개발자는 data를 보조스트림에 던지면 끝 정도 기억
     
    (앱 2개 그림)
    App1,2 동시에 처리해야 함⇒ 스레드 2개 필요
    (ex) 프로세스 10개면 스레드 10개 필요)
     
    버퍼가 꽉 차야 내려옴 ⇒ 안 차면 안 흘러감
    ⇒ 그렇다면, 전부 다 안 찼을 때 흘리고 싶다 ⇒ 강제로 흘려보냄 : Flush
    (보조스트림 다 차면 flush 안 해도 알아서 내려옴)
     
    ex) 예를 들어 bye 같은 것은 버터(4칸이라 하면)가 다 안 차임. 다 안 차이면 소비x⇒ os가 data를 안 가져감
     
    notion image
    notion image
    notion image

    쓰기버퍼

    app입장에서 data를 쓰는 것이니까 보조스트림은 쓰기버터이다.(output stream)

    패킷스트림

    os입장에서 읽기 버퍼(input)
     

    보조스트림 성격

    -read
    -write
     
    소캣이 뭐야..
     
    byte stream
    notion image
    한 바이트씩 받아서 a만 받음
    ab가 와도
    os가 a만 소비함.(b는 버려짐)
     
    ⇒ 해결하기 위해 ⇒보조 스트림
     
    우리는 data를 보조
     

    os가 data 받을 때 app 1,2 동시 사용할 때

    ⇒ 서로 데이터가 섞이면 안되니까 스레드 필요
    → 이 경우 app 1,2니까 스레드 2개 필요
    (app 1,2는프로세스_ 실행하고 있으니께)
    ex) if 프로세스 10개면 스레드 10개 필요

    flush

    데이터가 다 안 찼지만 강제로 내려보내야 할 때
    -flush하면 모든 물길이 열림
    ex) 데이터 크기 4인데 bye하면 한 칸 남음. 그렇지만 done⇒ flush함
    -데이터가 꽉 차는 경우, 알아서 내려옴.(ex> lion flush 안 해도 알아서 내려옴. )
     
    💡
    System.out : 모니터 ex) System.out.print
    💡
    System.in : 키보드

    보조스트림

    -app 입장에서, app 층 스트림은 byte stream!. os는 다른 stream이다.
    -app 입장에서는 첫번째 스트림은 쓰기버퍼.(output stream)
    -키보드에서 받을 때는 읽기버터가 됨?-v

    성격

    -read
    -write
     
    통신의 기본 5가지

    TCP

    스위칭

     

    패킷(바디, 헤더)

     

    IP

     

    LAN

     

    통신-v : tcp/udp

    TCP

    조건) 3번 왔다 갔다
    ⇒ 신뢰성 있는 통신
    notion image
    notion image
    UDP
    신뢰성 없는 통신,
    (A →B에게 주기만 함.)
    동영상에 적합-v
     
    EX) A,B가 인터넷 전화할 때
    A “야 너 진짜 못생”
    → 통신에서 유실됨.(신뢰성 없는 통신이라)
    B 알아들음(인간이니까)
     
    EX) 동영상
    STREAM끝이 없는 개울.
    동영상 STREAMING : 연속해서 보내-V
    사진 5장,1~2장 보내도(잃어도) 알아듣고 속도가 중요.
     
    신뢰성 있는 통신-느리다
    pw같은 것들은 tcp해야 함.
     
    신뢰성 없는 통신-빠르다 ⇒ 인간에게만 가능. 컴퓨터에 보내기에는 부적절
     
    너는 생겼다. 이거는 뜻 잘 모름(잘?못?) 인간이 봐도 신뢰성 있게 보내야 하는 것도 있음
     
    전화, striming -v아니면 tcp를 씀
     
    3hands
     
    a → b
    전용선
     
    서킷스위칭
     
    통신할 때는 서킷스위칭 쓰지x
     
     
    통신할 때 패킷, 세그먼트로 해야 — 전송가능-v
     
    통신의 파일 : 소켓
     
    소켓이 세그먼트로 쪼갬-v
     
    data > 소켓 > 세그먼트
    파일이 어쩔 때는 소캣이고 어쩔 때는 파일-v
     
     
    패킷스위칭 씀(돈도 아끼고 지연시간도 없애고)
    패킷포워드 장치 : 라우터-v
    라우터에서 데이터 유실 : 자기 용량 초과 혹은 많이 몰려 에러가 생길 수 있음
    → so tcp를 씀
    →ack 응답을 함. → 다시 한 번 응답
     
    →ack응답x→ 재전송(한 3번 정도)→통신 중단, 에러 됨.
     
    8192byte? / 3? 버퍼니까 전송된다고??
     
    동영상 1mb면 패킷으로 쪼개고 쪼갠만큼 헤더가 생김
    그래서 헤더데이트때문에 늘어남. 보통 패킷은 1500byte
    헤더 : 1400byte?
    메모장에서 흘러가는 데이터가.. 팻킷이 만들어진다? 1mb / 7???
    abc로 나뉘지 않음.예를 든것. 더 크게 쪼개짐.
    다 헤더 붙음(목적지, 출발지 ip)_팻킷-바디에??
     
    ip
     
    전세계 컴터가 있는데
     
    💡
    host 인터넷 되는 모든 장치 ex)컴퓨터, tv, 워치
     
    패킷 스위칭이니까 한번에 못 보내고 잘게 쪼갬→ 어떤 용량을 쓰면 write버퍼에 가서 파일로 가서 통신.소켓.
    메일프로그램(write버퍼) →메일프로그램(read버퍼)
    os가 가진 소캣(⇒파일)
    1. 파일이 세그먼트로 바뀜’? 스트림 크기 : 보내는 사람이 정함 1mbte를 보내면 segment로 쪼개져서 대충 7개로 쪼개지면
    1(헤더)
    2
    3
    4
    5
    6
    7
    1460 byte(바디 body=페이로드payload)
    ㅤ
    ㅤ
    ㅤ
    ㅤ
    ㅤ
    ㅤ
    2.위의 아이를 패킷으로 만듦
    notion image
    출발지 : ip
    도착지 : ip
     
    ll
    >hw
     
    패킷
    패킷의 주소를 보고 가장 가까운 라우터로 감.-v
    목적지 : 가장 가까운 라우터
    notion image
    세그먼트라는 것은 ….택배박스는 헤더는 안 까도 위에 있음(송장)
    가장 가까운 곳으로 간다고? 트럭을 갈아탄다고? 컴 > 1> 2
    5번이라면 가장 최적의 경로를 찾아(라우터) 그래서 프레임 벗겨 목적지 주소만 보고 트럭만 보고? 다음 라우터 ?(말을 갈아타는 곳=역창??????)-v 새 말 =새 주소⇒ 동적??? 무슨 말이야?,,,,,
     
     
    notion image
    hw > 패킷ack > 세그먼트 재조립
    그렇게 7번까지 받는다고?? 그럼 데이터 완성? 그래서 메인프로그램에 받아서 출력을 한다고?
    패킷은 ip주소 헤더
    세그 데이터 주소?
    프레임-전송 type?
    ip -host의 유일한 값(primary 키 같은)
     
    프로그램
     

    소켓
     
    os
     
    소켓 = os가 가지고 있는 파일인데 통신할 때 소켓이라고 한다.
    프레임 : 트럭 차, 라우터로 이동할 때 쓰는 이동 수단(목적지는 가장 가까운 라우터)
    목적지는 계속 변경된다.(같은 경로가 있으면 덜 바쁜 쪽으로 가기 때문에. 동적이다.)
    -
    notion image
    앱에서 스트림>쓰기버퍼>스트림>소캣> os > Hw
    파일은 소캣이다라는 말은… 파일 = 소캣이란 말이 아니라
    소캣이 컴퓨터에서 구조가 파일처럼 쓰인다..란 말이다.
    app 영역은 : 지금 실행하고 있는 프로그램(프로세스) 느낌
    notion image
     
    notion image
    3way handshake
    안녕 > 안녕이라고 했지? >okay

    스위칭

     

    패킷(바디, 헤더)

    Share article
    Contents
    운영체제stream쓰기버퍼패킷스트림보조스트림 성격os가 data 받을 때 app 1,2 동시 사용할 때flush보조스트림성격TCP스위칭패킷(바디, 헤더)IPLAN통신-v : tcp/udpTCP스위칭패킷(바디, 헤더)

    Coding's note

    RSS·Powered by Inblog