분류 전체보기 (357) 썸네일형 리스트형 12. 트랜스포트 레이어 트랜스포트 레이어는 서로 다른 호스트에서 수행 중인 프로세스들 간의 logical 한 통신을 지원함 각 운영체제 상위에서 동작하는 어플리케이션의 프로세스들 사이에서의 통신 physical은 직접적으로 연결을 하고 데이터를 물리적으로 주고 받는 건데 트랜스포트 레이어는 프로세스가 인터넷 어딘가에 존재하는 프로세스와 하는 그냥 논리적인 통신을 함 transport protocol 통신 시 만약 보내는 쪽에서 보내려는 데이터가 100MB이고 이를 256kB씩 끊어서 보내려고 할 때 이 끊어놓은 단위를 segment라고 함. (transport layer에서는 segment, network layer에서는 packet, linked layer에서는 frame이라는 용어 사용) transport layer 내가 .. 5. System Analysis 1. 현행 시스템을 분석한다. 완전히 새로운 소프트웨어를 만드는 것이 아니고 사용자가 돈을 주고 사서 사용하고 만족을 얻어야 하기 때문에, 사용자의 요구사항에 맞게 제작해야 한다. 따라서 현재 사용하고 있는 소프트웨어의 시스템을 모델링해보고 더 나은 소프트웨어 로 어떻게 업그레이드 할지를 생각하는 것이 중요하다. 현행 시스템 분석 후에 목표 시스 템을 구성하고 개발 표준을 정의하면 된다. 현행 시스템의 하드웨어 구성과 네트워크 구성을 파악하고 장단점을 분석한 뒤 개선 방안을 도출해내면 된다. 2. 요구사항을 얻는다. 요구사항에 따라서 소프트웨어를 어떻게 만들 것인지 어떤 기능을 첨 부할 것인지를 결정하기 때문에 요구사항을 파악하는 것이 중요하다. 요구사항을 추출할 때는 요구사항 메트릭스를 사용하기도 한다.. 19. 멀티스레딩 모델 - 커널 스레드 : 커널 내부적으로 생성, 삭제되는 스레드, 운영체제에 의해 관리됨 - 유저 스레드 : 유저스페이스 스레드 라이브러리에 의해 생성 유저스레드는 커널스레드에 매핑되어야 함 커널이 커널스레드를 스케줄링하고 유저스레드가 커널스레드에 매핑되어서 수행 커널은 유저스레드를 인식 못함 - 유저스레드는 반드시 커널스레드에 매핑 커널스레드가 block되면 거기에 매핑된 유저스레드 모두 block (= waiting) 멀티코어, 멀티프로세싱 환경에서 서로다른 스레드가 서로다른 프로세스에 랃아되어 수행 -> 각 커널 스레드가 서로다른 cpu를 할당받음 커널 스레드가 block되어 waiting 상태가 되면 그 커널스레드에 매핑된 유저스레드 모두 waiting state가 됨 한 스레드 ua 가 io 수행을 .. 18. 멀티코어 프로그래밍 Multi core : 코어가 여러개라는 것은 여러 스레드가 동시 수행 가능하다는 것이다 두가지 프로그래밍 방식이 있음 - Data parallelism 동일한 일을 수행하고 있지만 수행 대상 데이터가 다름 데이터를 여러 subset으로 나누고 각 코어에 다른 데이터 같은 일을 수행시킴 - Task parallelism 각 코어가 유니크한 연산을 수행. 데이터도 다를 수 있음 - concurrent : 동시성, 병행성 - parallelism : 병렬성 프로그래밍이 더 어려움 각 코어에 어떤 스레드를 할당할지, 코어간의 밸런스, 데이터를 효과적으로 분배, 특정 코어에서 산출한 데이터를 다른 코어에서 사용할 수도 있음, 테스트와 디버깅이 어려움, 소프트웨어 설계 측면에서 새로운 어프로치가 필요함 17. 스레드 * 스레드를 도입하게 된 이유 병렬적으로 수행되어야 할 프로세스가 많다 많은 프로그램들이 serialize 되지 않고 프로세스를 수행해야한다 - serialized : 스토리지 문맥에서 데이터구조나 객체 상태를 동일하거나 다른 환경에 저장하고 나중에 재구성할 수 있는 포멧으로 변환하는 것 웹 서버에서 잘 확인해볼 수 있음 웹 서버는 여러 요청을 받아서 병렬적으로 처리해야 한다. 클라이언트A가 요청을 보내면 서버는 fork함수로 그 요청을 처리할 프로세스를 생성해야하고 이 후에 클라이언트 B가 또 요청을 하면 그 요청을 처리하기 위한 또다른 프로세스를 생성해야한다. 지속적으로 프로세스를 생성해야하지만 fork 함수를 메모리를 많이 필요하며 computation양도 많다. 따라서 thread라는 오버헤드가 .. 16. IPC 프로세스간 커뮤니케이션 : message passing 하지만 각 프로세스마다 주소 공간이 있고 다른 프로세스의 공간을 볼 수 없어서 여러 프로세스간의 커뮤니케이션은 어려움 *IPC는 커널의 도움을 받아서 프로세스간 커뮤니케이션이 가능하다 1) message passing : 커널 내부에 메일 박스라는 데이터 스트럭처를 생성 2) shared memory : 특정 프로세스의 일부를 공유 영역으로 지정하고 그 영역을 통해서 커뮤니케이션 진행 https://snnchallenge.tistory.com/120 15. IPC 프로세스간 커뮤니케이션 : shared memory, producer-consumer문제 - independent : 다른 프로세스의 영향을 받지 않음 - cooperating : 여러 프로세스가 병렬적으로 수행되면서 한가지 일을 당성하고자함 .. 15. IPC 프로세스간 커뮤니케이션 : shared memory, producer-consumer문제 - independent : 다른 프로세스의 영향을 받지 않음 - cooperating : 여러 프로세스가 병렬적으로 수행되면서 한가지 일을 당성하고자함 * IPC의 장점 - information sharing : 파일 하나만 오픈하고 공유하면 리소스 사용을 줄일 수 있음 - computation speed up : 병렬적으로 수행하여 빨라짐 - modularity : 하나의 프로세스에 모든 기능을 넣으면 프로세스가 방대해져서 프로그램 모듈화가 어려움 - convenience : 여러가지 일을 한 번에 처리해서 편리하게 일 처리를 함 하지만 각 프로세스마다 주소 공간이 있고 다른 프로세스의 공간을 볼 수 없어서 여러 프로세스간의 커뮤니케이션은 어려움 *IPC는 커널의 도움을 받아서 프로세스간 커뮤니케이션.. 14. 고아프로세스와 좀비프로세스 부모프로세스가 종료됐을 때 자식 프로세스는 부모 프로세스가 없어져서 고아프로세스가 됨 - 프로세스가 종료될 때, 커널은 이 프로세스가 누구의 부모 프로세스인지 확인 - 커널은 자식 프로세스의 부모 pid를 1로 바꿈 (init 프로세스가 부모라는 말) - init 프로세스 : 유닉스 계열 운영체제에서 부팅과정에서 최초로 생성되는 프로세스 시스템이 종료될 때까지 계속 살아있으며 pid는 일반적으로 1임 - 고아 프로세스가 작업을 종료하면 init 프로세스가 wait 함수를 호출한다 - init 프로세스가 고아 프로세스의 종료 상태를 회수하여 좀비프로세스가 되는 것을 막음 좀비 프로세스는 자식 프로세스가 종료됐지만 부모프로세스에 의해 거둬지지 않은 프로세스를 말함 즉 부모 프로세스가 wait함수를 호출해서 .. 이전 1 ··· 32 33 34 35 36 37 38 ··· 45 다음