전체 글(315)
-
스레드 동기화 문제
안녕하세요 bannavi입니다^ㅅ^ 제 포스팅이 도움이 되고 있었으면 좋겠어요 헤헤 오늘은 스레드 동기화 문제를 포스팅 해보겠습니다 고우고우~~ 동기화(Synchronization) 이슈 누가 읽고 누가 쓰는지 순서가 정해져 있지 않다보니, 꼬이게 보면 비정상 동작이 발생할 때가 있음. 이렇게 되면 디버깅 하기도 쉽지가 않아짐. -> 스레드 관리가 필요함.
2021.02.25 -
스레드 장단점
안녕하세요 bannavi에요^ㅅ^ 오늘은 스레드의 장단점을 살펴보겠습니다! Thread 장점1 1. 사용자에 대한 응답성 향상 2. 자원 효율 - IPC 기법과 같이, 프로세스간 (자원 공유를 위한) 번거로운 작업이 필요 없음 - 프로세스 안에 있으므로, 프로세스의 데이터에 모두 접근 가능 3. 작업이 분리되어 코드가 간결하다 - 사실 작성하기 나름 Thread의 단점 1. 스레드 중 한 스레드만 문제가 있어도, 전체 프로세스가 영향을 받음 2. 스레드를 많이 생성하면, Context Switching이 많이 일어나, 성능 저하 - 예: 리눅스 OS에서는 Thread를 Process와 같이 다룸 스레드를 많이 생성하면 모든 스레드를 스케쥴링 해야 하므로, Context Switching이 빈번할 수밖에 ..
2021.02.23 -
스레드 개념
안녕하세요 bannavi입니다^ㅅ^ 오늘은 스레드의 개념에 대해서 살펴보려고 합니다 바로 진행해볼게요~ Thread(스레드) - Light Weight Process 라고도 함(프로세스보다 구조가 적다) - 프로세스(프로세스 간에는 각 프로세스의 데이터 접근이 불가, 그래서 IPC사용했었어) - 스레드(하나의 프로세스에 여러개의 스레드 생성 가능, 스레드들은 동시에 실행가능, 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능) - 프로세스처럼 IPC가 필요 x -Thread는 각기 실행이 가능한 stack이 존재 쓰레드 별로 register따로, stack따로 있다. code와 data를 공유. 레지스터를 갖고있기 때문에 별도로 동시에 실행이 가능하다 소프트웨어 병행 작업 처리를 위해 mult..
2021.02.23 -
프로세스 총정리와 프로그램 성능 개선 방법의 이해
안녕하세요 bannavi입니다^ㅅ^ 오늘은 그동안 배웠던 프로세스를 총 정리해보고 프로그램 성능 개선 방법을 이해해보는 시간을 가져볼게요 바로 시작하겠습니다 고고! 0.05초가 지나면 그럼 이제 여기에 있는 이 코드를 CPU에서 실행하게 되는것이죠 이 라이브러리에 open함수를 열어서 어셈블리어나 기계어를 들여다 보면, 결과적으로 어떤 코드가 들어가 있느냐, 이렇게 인터럽트를 일으켜주는 것이죠. 그러면 open()이라는 함수가, int에 의해서 사용자모드를 커널모드로 바꿔주고, OS가 처음 부팅될 때 만들어진 IDT에서 0x80에 해당하는 주소(함수)를 찾아서 실행해주고, 그 이후 system_call()함수에서 eax로부터 시스템 콜 번호를 찾아서, 해당 번호에 맞는 시스템콜 함수로 이동하게 됩니다. ..
2021.02.23 -
참고_IPC 기법2
안녕하세요 bannavi입니다^ㅅ^ 오늘은 IPC 기법 2 시간이에요 바로 시작해보겠습니다^ㅅ^ signal과 socket IPC 기법이지만, 이외에도 많이 사용되는 두가지 기술 - 시그널(signal) - 소켓(socket) -> 사실은 IPC기법을 위해서 만들어진건 아니고, 다른 목적을 가지고 있지만 그 특별한 목적 이외에도 프로세스간 커뮤니케이션을 위해서도 사용할 수 있다. 시그널(signal) - 일종의 이벤트 - 유닉스에서 30년 이상 사용된 전통적인 기법 - 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었는지를 알려주는 기법 - 프로세스 관련 코드에 관련 시그널 핸들러를 등록해서, 해당 시그널 처리 실행 1. 시그널 무시 2. 시그널 블록(블록을 푸는 순간, 프로세스에 해당 시그..
2021.02.23 -
참고_IPC 기법 1
안녕하세요 banavi입니다^ㅅ^ 오늘은 각각의 IPC기법을 조금 깊이있게 살펴보려고 합니다. 바로 시작해볼게요 고고! 1. file 사용(실시간성이 떨어지고, 저장매체를 다녀오기 때문에 시간이 많이 걸립니다) 2. Message Queue 3. Shared Memory 4. Pipe 5. Signal 6. Semaphore 7. Socket 지난 시간에 2번부터 7번까지는 결과적으로 프로세스가 커널 공간을 공유한다는 내부적인 특징이 있기때문에 그 기술을 기반으로 해서 다양한 기법들이 나왔다고 했었죠. 먼저 pipe(파이프)입니다 - 기본 파이프는 단방향 통신 - fork()로 자식 프로세스 만들었을 때, 부모와 자식간의 통신 메시지 큐(message queue) - 큐니까, 기본은 FIFO 정책으로 데..
2021.02.23