상세 컨텐츠

본문 제목

68일차 TIL( cs study / nothing else() )

TILs

by API284 2023. 8. 28. 14:23

본문

- 질문 :   스케줄링 알고리즘에 따라 프로세스들은 상태변화가 일어나며 “준비/수행” 상태일때 CPU를 사용하는데, I/O 단계가 완료되었을 때는 언제인가요?
    - 답변 :  대기상태 → 준비상태를 이야기하며,  + I/O는 입력(Input)/출력(Output)의 약자로, 컴퓨터 및 주변장치에 대하여 데이터를 전송하는 프로그램, 운영 혹은 장치를 일컫는 말입니다. 대개의 경우 입력에 함께 출력이 발생하게 됩니다. 프로세서와 메모리, 확장 슬롯, 마더보드에서 일어나는 데이터 전송도 I/O라고 일컬어집니다.
    - 꼬리질문 : 좋습니다. 해당 프로세스에서 CPU를 강제로 할당(회수)해야하는 단계는 언제인가요?
        - 답변 :  수행→준비  / 대기→ 준비 두 단계이며, 이때에는 선점 스케줄링이 발생됩니다.
        - 꼬리질문 : 훌륭하네요. 그렇다면 대기 상태에 대해 간단한 설명 또는 이행되는 프로세스를 간단하게 설명 해주세요.
            - 답변 :  수행 중에서 대기 상태로 변경되면 CPU를 반납합니다. CPU 스케줄링 알고리즘은 다른 준비 상태의 프로그램(프로세스)을 선택하여 CPU를 할당할 수 있습니다.

 

 

 

6. useEffect의 실행 순서에 대해 설명해주세요 

useEffect는 React 함수 컴포넌트에서 부수 효과(side effect)를 처리하기 위해 사용되는 훅입니다. 부수 효과란 컴포넌트 외부와의 상호작용을 의미하며, 예를 들어 데이터 가져오기, 구독 설정, DOM 조작 등이 해당됩니다. useEffect는 컴포넌트가 렌더링될 때마다 실행되며, 이때 실행 순서와 관련하여 몇 가지 중요한 사항이 있습니다.

useEffect 훅이 작동하는 방식은 다음과 같습니다:

첫 번째 렌더링 시 실행: useEffect의 첫 번째 인자로 전달한 함수는 컴포넌트가 처음 렌더링될 때 실행됩니다. 이 때, 컴포넌트가 화면에 나타난 이후에 해당 효과 함수가 실행됩니다.

의존성 배열 확인: useEffect의 두 번째 인자로 전달한 배열(의존성 배열)을 확인합니다. 이 배열은 useEffect를 어떤 값에 의존하도록 설정하는 것이며, 배열 내의 값이 변경되었을 때에만 효과 함수가 재실행됩니다.

만약 두 번째 인자로 빈 배열([])을 전달하면, 효과 함수는 컴포넌트가 처음 렌더링될 때 한 번만 실행되며, 컴포넌트가 언마운트될 때 정리(clean-up) 함수가 실행됩니다.

두 번째 인자로 의존성이 있는 변수를 포함하는 배열을 전달하면, 해당 변수가 변경될 때마다 효과 함수가 실행됩니다. 이 때, 컴포넌트가 처음 렌더링될 때도 실행됩니다.

효과 함수 실행: 첫 번째 렌더링 이후에는 의존성 배열의 값이 변경되었을 때 해당 효과 함수가 실행됩니다. 의존성 배열이 비어있다면(빈 배열을 전달한 경우) 컴포넌트가 언마운트될 때만 정리 함수가 실행됩니다.

정리(clean-up) 함수 실행(optional): 효과 함수가 반환하는 함수(정리 함수)는 컴포넌트가 다음으로 재렌더링되기 전 또는 언마운트될 때 실행됩니다. 이 함수를 사용하여 부수 효과를 정리하거나 해제할 수 있습니다.

요약하면, useEffect의 실행 순서는 다음과 같습니다:

컴포넌트 렌더링
첫 번째 렌더링 시 useEffect 효과 함수 실행
의존성 배열 내의 값이 변경되면 useEffect 효과 함수 재실행
컴포넌트가 재렌더링될 때마다 필요한 경우 useEffect 효과 함수 실행
컴포넌트가 언마운트될 때 정리(clean-up) 함수 실행 (의존성 배열에 의존성이 있는 경우에만)

관련글 더보기