임베디드기사

[임베디드기사] 2018년 임베디드기사 필답형 실기 기출문제

EveningPrimrose 2022. 10. 20. 22:13
반응형

2018년도 임베디드기사 실기 기출문제

 

 

1. XOR 게이트 1개와 AND 게이트 1개로 반가산기를 그리시오.

 

2. malloc() 함수로 메모리를 할당 받은 후, 할당받은 메모리를 해제하는 함수는?

 - free()

- malloc(size_t size) : size 바이트만큼의 메모리를 반환해준다. 반드시 free()와 함께 사용
- realloc(void* ptr, size_t, new_size) : 이미 존재하는 메모리의 크기를 new_size 크기로 변경
- free(void* ptr) : 할당받은 메모리를 해제하는 함수

 

3. 디바이스 드라이버 모듈을 register_chrdev() 함수로 커널에 등록하고, 커널 메모리를 request_region() 함수로 할당받는 리눅스 커널 함수는?

 - module_init()

커널 모듈(Kernel Module)
 - 시스템 부팅 후 동적으로 로딩할 수 있는 커널 구성 요소
 - 커널을 재컴파일하거나 시스템 재부팅 필요 없이 커널의 일부분 교체 가능
 - 디바이스 드라이버, 파일 시스템, 네트워크 프로토콜 등 모듈로 제공
 * 커널 로딩 시 module_init()로 지정된 함수 호출
 * 커널 언로딩 시 module_exit()로 지정된 함수 호출

 

4. C언어에서 문자열을 입력받는 함수와 한 글자를 입력 받는 함수는?

 - gets(), getch()

- getchar() : 문자 전용 입력함수, 문자 한개만 읽어들임
- getche() : 문자 전용 입력함수, 문자 한개만 읽어들임, \n 값을 입력 받지 않음
- getch() : getche() 함수와 동일하나, 입력 문자가 보이지 않음
- gets() : 문자열 전용 입력함수
- scanf() : 숫자, 문자, 문자열 등의 데이터를 입력서식을 이용해 읽어들임

 

5. 소프트웨어의 기능을 검사하는 방법으로 동치 분할 검사, 경계값 검사 등을 수행하는 방법은?

 - 블랙박스 테스트

- 블랙박스 테스트 : SW의 내부 구조, 작동 원리를 모르는 상태에서 SW의 동작을 검사
- 화이트박스 테스트 : SW의 내부 구조, 동작을 세밀하게 검사하며, 소스 코드를 테스트하는 기법

 

6. C 프로그램 소스를 보여주고, 출력 결과를 적는 문제. 정수 배열에 10, 20, 30, 50이 저장되어있고, 포인터가 해당 배열을 가리키고 있을 때, 해당 포인터 주소를 2 증가시키고 해당 주소가 가리키는 값에 10을 더하여 출력하는 문제.

 - 40

 

7. 커널에서 압축된 커널 이미지를 램에 저장하는 기능을 수행하는 것이 무엇인가?

 - 부트로더

- 부트로더 : 운영체제(OS)가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 관련 작업을 마무리하고 최종적으로 운영체제를 시동시키기 위한 목적을 가진 프로그램

 

8. 데닝이 제안한 프로그램의 움직임에 관한 모델로 프로세스를 효과적으로 실행하기 위해 주기억장치에 유지되어야 하는 페이지의 집합은?

 - 워킹 셋

- 스레싱(Thrashing) : 페이지 폴트가 빈번하게 발생해서 실제 CPU 사용시간보다 페이지를 교체하는 시간이 늘어나는 현상
- 워킹셋(Working set) : 일정시간동안 특정 주소를 집중적으로 참조하는 프로세스의 특징에 따라 프로세스가 많이 참조하는 페이지 집합을 메모리 공간에 상주시켜 스레싱을 줄이는 방법

 

9. C 프로그램 소스를 보여주고, 출력 결과를 적는 문제, 정수형 변수 하나를 malloc() 함수로 할당하고, 해당 위치에 10을 기록한 후 해당 변수의 값을 출력.

 - 10

 

10. 주변장치가 CPU를 경유하지 않고 직접 주기억장치에 접근하는 입출력 방식은?

 - DMA

입출력 제어방식
 - 프로그램에 의한 I/O (CPU 개입)
 - 인터럽트에 의한 I/O (CPU 개입)
 - DMA에 의한 I/O (CPU 개입X)
 - 채널에 의한 I/O (CPU 개입X)

DMA(Direct Memory Access), 직접 메모리 접근
 - 주변장치(하드디스크, 그래픽 카드 등)들이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능

동작모드
 - 사이클 스틸링(Cycle Stealing) : CPU가 DMA에 우선순위 양보, 1사이클 정지하여 처리기간동안 정지
 - 버스트 모드(Burst Mode) : DMA가 버스 사용권 획득 시 데이터 전송 완료까지 버스 사이클 독접

 

11. RS 플립플롭에서 입력 단자 중 하나에 인버터를 연결하고 두 입력단자를 연결하여 사용하는 플립플롭은?

 - D 플립플롭

 

12. 스레드 간의 동기화 기법에 대한 설명. 공유자원에 대해서 한 순간에 하나의 프로세스만 접근하는 것은 ( )이다. 한 순간 공유자에 대해서 하나의 프로세스만 접근하는 방법은 ( )이다. 상호배제 기법 중에서 대기를 의미하는 P연산과 진입을 의미하는 V연산을 사용하는 것은 ( )이다. V연산은 임계영역을 빠져나올 때, 세마포어 값을 1 증가시켜서 대기 중인 프로세스가 임계영역에 진입할 수 있도록 해주는 Signal 동작을 수행한다.

 - 임계영역, 상호배제, 세마포어 

- Race Condition : 동시에 여러 프로세스가 동일한 자료에 접근할 때 접근 순서에 따라 값들이 변하는 현상
- 임계영역(Critical Section) : Race Condition이 발생할 수 있는 코드, 부분, 영역
- 상호배제(Mutial Exclusion) : 특정 프로세스가 공유자원을 사용하고 있을 경우, 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법
- 뮤텍스(Mutex) : Race Condition을 방지하기 위한 기법, 임계구역에 들어가기 전에 반드시 Lock을 획득하고, 임계영역을 나올 때 Lock을 반환
- 세마포어(Semaphore) : 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법, S라는 정수 변수(동시 접근이 가능한 개수)를 사용하여 wait(), signal()로만 접근이 가능, 자원을 사용할 때 wait() 연산(P연산)을 수행하여 S 값을 감소시키고, 자원의 사용이 끝날 때 signal() 연산(V연산)을 수행하여 S값을 증가시킴

 

13. 클래스 다이어그램을 보여주고, 연관관계의 유형을 묻는 문제. Directory 클래스와 File 클래스로 구성되어 있고, Directory 클래스가 자기 자신과 집합 연관으로 연결되어 있으며, 한편 File 클래스와도 집합 연관으로 연결되어 있다. 즉, Directory가 서브 Directory를 가질 수 있고, File도 가질 수 있는 클래스 다이어그램은?

 - 집합

 

14. 주변장치가 우선순위에 따라 직렬로 연결되어 있는 인터럽트 처리 방식은?

 - 데이지 체인

- 폴링(Polling) : 소프트웨어적으로 인터럽트 우선순위를 판별. 우선순위 변경이 용이하고 회로가 간단하여 융통성이 있지만 인터럽트가 많으면 반응시간이 느리다.
- 벡터 인터럽트(Vector Interrupt) : 하드웨어적으로 인터럽트 우선순위를 판별. 별도의 프로그램 루틴이 없기 때문에 응답 속도가 빠르지만 회로가 복잡하고 융통성이 없다. 추가 하드웨어가 필요하므로 비경제적이다.
- 데이지 체인(Daisy Chain) : 하드웨어적으로 인터럽트 우선순위를 판별하는 방식 중 직렬 우선순위 부여 방식. 인터럽트가 발생하는 모든 장치를 한개의 회선에 직렬로 연결하며 우선순위가 높은 장치를 맨앞에 위치시키는 등 우선 순위에 따라 연결한다.

 

15. 럼바우의 객체 모델링의 3가지 방식은?

 - 객체 모델링, 동적 모델링, 기능 모델링

○ 럼바우 분석기법(Rumbaugh) : 모델링 기법 중 하나로 그래픽으로 표현한 분석 기법
 - 객체 모델링(Object Modeling) : 객체 다이어그램(객체의 관계) 표시
 - 동적 모델링(Dynamic Modeling) : 상태 다이어그램(상태도)를 통해 시간의 흐름에 따라 객체들을 모델링
 - 기능 모델링(Functional Modeling) : 자료 흐름도(Data Flow Diagram)를 이용하여 프로세스 간 자료를 중심으로 모델링

 

16. 리눅스 커널 2.5부터 커널의 원자성을 디버깅할 수 있는 기능이 강화되었는데, 다음 파라메터들을 설명하는 문제

config_debug_preempt=y

config_debug_kernel=y

config_debug_kallsyms=y

config_debug_spinlock_sleep=y

 

 - config_debug_preempt : Debug preemptible kernel

 - config_debug_kernel : Kernel debugging

 - config_debug_kallsyms : Load all symbols for debugging

 - config_debug_spinlock_sleep : Sleep-inside-spinlock checking

 

17. 실행중인 프로세스의 상태를 저장하고 다른 프로세스로 전환하는 작업

 - 문맥교환(Context Switching)

- 문맥(context) : 프로세스의 상태 정보
- 문맥교환(context switch) : 프로세스의 상태 정보를 교환하는 작업
- 문맥교환은 멀티태스킹(멀티프로세싱)이 가능하도록 해준다.

 

18. POSIX에서 스레드를 생성하는 함수이름을 묻는 문제.

 - pthread_create()

- pthread_create() : 쓰레드 생성(생성과 동시에 실행)
- pthread_join() : 해당 쓰레드가 종료할때까지 대기
- pthread_detach() : pthread_create()를 통해 생성된 쓰레드를 떼어냄
- pthread_exit() : 현재 실행중인 쓰레드를 종료

 

 

※ 이전 회차 기출문제

클릭하시면 2017년도 임베디드기사 실기 기출문제로 이동합니다

 

클릭하시면 2016년 임베디드기사 실기 기출문제로 이동합니다

반응형