기본기 닦기(4) - 프로세스/스레드,
ㅇ 프로세스/스레드
만약 한 게임을 온라인상에서 pc에 다운로드 받는다고 생각해볼때, 다운로드받는동안 마우스커서도 안움직이고, 아무런 동작이 되지 않는다고 치면 많이 답답할 것이다. 하지만 옛날엔 이런방식이었다. 옛날엔 한번에 하나의 작업만 해낼 수 있었다. 하지만 현재는 그렇지 않다. 바로 pc가 여러개의 프로세스를 한번에 작업할 수 있는 멀티태스킹이 가능해졌기 때문이다. 작업관리자를 보면 여러개의 프로세스가 동시에 실행되고 있는걸 확인 할 수 있고, 고유의 PID도 있다는것을 확인 할 수 있다.
여러 프로세스를 함께 돌리는 작업은 동시적, 병렬적, 또는 혼합으로 이뤄진다. 동시성은 프로세스하나가 이것조금 저것조금 하면서 여러작업을 돌아가면서 일부분씩 진행하는것을 의미하고, 병렬성은 프로세서하나에 여러개의 코어 여러개가 달려 각각 동시에 작업을 수행하는 것을 의미한다. 한 프로세스 내에도 여러 갈래의 작업들이 동시에 진행될 필요가 있는데 이 갈래를 스레드라고 한다. 프로세스들은 컴퓨터의 자원을 분할해서 쓰지만 스레드는 프로세스마다 주어진 전체자원을 함께 사용하는것이다.
ㅇ OSI 7 계층
OSI 7계층은 사실 네트워크 공부할때에도 DOD로 공부했고, 정보처리기사 공부할때도 아파서티내다피나다 이렇게만 외우고 뭐가 무슨 역할을 하는지 잘 몰랐다. 그래서 간단히 정리해봤다.
1층 물리계층 - 데이터를 전기 신호로 변환하는데 필요한 계층 허브
2층 데이터링크 계층 - 랜에서 데이터를 주고받는데 필요한 계층. 네트워크 기기간 데이터 전송과 물리주소를 결정함. 스위치
3층 네트워크 계층 - 한 네트워크에서 다른 네트워크로 통신하기 위해 경로를 설정하거나 논리적인 주소를 결정함. 라우터
4층 전송 계층 - 더 정확하게 데이터 전송에 초점을 맞추기 위해 거침.
5,6,7 층 응용계층 - 정확하게 데이터를 전송했다면 어떤 애플리케이션까지 전달이 되는지 과정을 거치는데, 애플리케이션에서 사용하는 데이터를 주고받는데 필요한 계층들.
5층 세션계층 - 세션연결/설정/해제와 통신방식을 결정
6층 표현계층 - 데이터를 읽을 수 있도록 표현하기 위해 문자 코드, 압축, 암호화 등의 방식으로 데이터를 변환하는 계층
7층 응용계층 - 애플리케이션에 대한 서비스를 제공하는 계층
ㅇ 클래스, 객체, 인스턴스
흔히들 자바를 시작하면 가장 많이 듣는 비유는 '붕어빵은 객체, 붕어빵 틀은 클래스' 일것이다. 하지만 좀더 나은 비유를 하자면 '붕어빵은 인스턴스, 붕어빵틀은 클래스'가 더 맞는 비유같다. 클래스는 객체를 기술하는 문법, 인스턴스는 특정 클래스에 대한 객체(?), 객체는 개념적으로 형식을 갖춘 단위라고 생각하는게 더 맞다고 한다.
예를 들어보면 '미인'이라는 클래스가 있다면 거기에 맞는 인스턴스를 만든다면 '한소희', '아이유' 등이 클래스에 대한 인스턴스가 되는것이다.
널널한 개발자님의 영상을 보고 정리한건데 댓글에 굉장히 자연스럽게 잘 정리한 분이 있어서 발췌해봤다.
ㅇ 참고자료
https://www.youtube.com/watch?v=iks_Xb9DtTM