😄 제가 대학원 준비과정에서 정리했던 컴퓨터공학과 기본 과목을 공유합니다!
📬 댓글로 이메일 남겨주시면 한글 파일 보내드리겠습니다!
PS: 이현경 취업 성공 기원
프로그램을 메모리상에서 실행 중인 작업
프로세스는 각각 별도의 주소 공간 할당 (독립적)
여러 CPU가 하나 이상의 프로세스들을 동시에 처리 (병렬)
- 장점 : 안전성 (메모리 침범 문제를 OS 차원에서 해결)
- 단점 : 작업량 많을수록 오버헤드 발생. Context Switching으로 인한 성능 저하
프로세스 안에서 실행되는 여러 흐름 단위
스레드는 Stack만 따로 할당받고 나머지 영역은 공유
하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
공유 메모리를 통해 다수의 작업을 동시에 처리
- 장점 : 공유 메모리만큼의 시간ㆍ자원 손실 감소
전역변수와 정적변수에 대한 자료 공유 가능
- 단점 : 안전성 문제 - 하나의 스레드가 데이터 공간 망가뜨리면,
모든 스레드가 작동 불능 상태 (공유 메모리를 갖기 때문)
프로세스의 상태 정보를 저장하고 복원하는 일련의 과정
즉, 동작 중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구하는 과정을 말함
→ 프로세스는 각 독립된 메모리 영역을 할당받아 사용되므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되었을 때 오버헤드가 발생할 문제가 존재함
프로그램 실행 도중에 예기치 않은 상황이 발생할 경우 실행 중인 작업을 중단하고, 발생상황에 대한 우선 처리
① 수행 중인 프로그램 정지
② 상태 레지스터와 PC 등을 스택에 임시 저장
③ 인터럽트 서비스 루틴으로 이동
④ 인터럽트 기능이 없었다면, 컨트롤러는 폴링 수행
폴링 방식
사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식
인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아 이에 맞는 인터럽트 서비스 루틴을 수행한다. (하드웨어에 비해 속도 느림)
인터럽트 방식
MCU 자체가 하드웨적으로 변화를 체크하여 변화 시에만 일정한 동작을 하는 방식
인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다. 따라서 '실시간 대응'이 필요할 때는 필수적인 기능이다.
즉, 인터럽트는 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법이다.