컴퓨터에서 동시에 실행되는 작업의 단위로 프로세스는 운영체제로부터 자원을 할당받아 실행되는 프로그램의 인스턴스이고, 스레드는 프로세스 내에서 실행되는 작업의 단위.
운영체제로부터 자원을 할당받아 실행되는 프로그램의 인스턴스.
- 각각의 프로세스는 독립된 메모리 공간을 가지며, 실행 중인 프로세스 간에는 데이터 공유가 어려움.
- 프로세스는 자신만의 주소 공간, 파일 핸들러 및 시스템 자원을 가지고 있으며, 다른 프로세스와는 독립적으로 실행.
- 독립성은 안정성과 보안을 높이는 장점으로 작용하지만, 프로세스 간의 전환에는 오버헤드가 발생하므로 비용이 크다는 단점도 존재.
프로세스 내에서 실행되는 가장 작은 실행 단위.
- 한 프로세스 내에서 여러 개의 스레드를 생성할 수 있으며, 이들 스레드는 같은 주소 공간을 공유.
- 스레드는 프로세스 내의 자원을 공유하면서 실행되기 때문에 데이터 공유가 간단하고 효율적.
- 스레드 간의 전환은 프로세스 간의 전환보다 빠르며, 자원을 공유하기 때문에 프로세스보다 경제적.
- 스레드 간의 동기화와 데이터 접근 제어에 주의해야 하며, 잘못된 관리로 인해 예기치 않은 결과가 발생할 수도 있음.
프로세스는 독립적인 실행 단위로서 자원을 독립적으로 할당받고, 스레드는 프로세스 내에서 실행되는 작업의 단위로서 자원을 공유.
프로세스는 안정성과 보안을 강조하며 스레드는 자원 공유와 경제성을 강조.
프로세스와 스레드 간의 전환에는 어떤 차이가 있는가?
: 프로세스 간의 전환은 컨텍스트 스위칭이 필요하기에 오버헤드가 크고 자원 공유가 어려움. 스레드 간의 전환은 오버헤드가 적고 자원 공유가 간단함.
프로세스는 독립적인 주소 공간을 가지며 생성 및 소멸 비용이 크고, 스레드는 같은 주소 공간을 공유하며 생성 및 소멸 비용이 적음.
프로세스와 스레드를 사용하는 이유는 무엇인가?
: 프로세스와 스레드를 사용하는 것은 컴퓨팅 자원을 효율적으로 활용하고, 복잡한 작업을 여러 부분으로 나누어 병렬로 처리함으로써 전반적인 시스템의 성능과 반응성을 향상시키는 데 중요한 역할을 함.
- 데이터를 세로로 스크롤 가능한 목록 형태로 표시.
- 각 셀은 주로 하나의 행으로 구성되며, 다양한 종류의 데이터를 표시할 수 있음.
- 각 셀은 독립적으로 스타일과 레이아웃을 설정할 수 있음.
- 주로 메일, 연락처, 설정 등의 화면에 사용.
- UITableView 클래스를 사용하여 구현.
- 데이터를 그리드 레이아웃으로 표시하는 데 사용.
- 여러 열과 여러 행으로 구성된 데이터를 표시할 수 있음.
- 수평 또는 수직 방향으로 스크롤이 가능하며, 사용자 정의 레이아웃을 지원.
- 사진 앨범, 앱 스토어 등에서 복잡한 레이아웃을 표시하는 데 사용.
- UICollectionView 클래스를 사용하여 구현.
TableView는 단순하고 일관된 레이아웃의 목록을 표시하는 데 적합하고, CollectionView는 다양한 형태의 레이아웃을 필요로 하는 경우에 적합함.
TableView와 CollectionView 중 어떤 것이 더 효율적인가요? 그 이유는 무엇인가?
: TableView는 구조가 단순하고 구현이 간편하기 때문에, 단일 열의 리스트를 표시하는 경우에는 효율적임. 대부분의 경우에 TableView는 성능이 우수하며, 메모리 사용량도 적음.셀의 재사용 메커니즘 덕분에 많은 양의 데이터를 효율적으로 처리할 수 있음.
CollectionView는 다양한 레이아웃을 지원하므로, 그리드 형태의 데이터를 표시하거나 복잡한 사용자 인터페이스를 구현하는 경우에는 CollectionView가 더 효율적임.
여러 열을 가진 리스트 또는 수평 스크롤이 필요한 경우에도 CollectionView가 더 적합함. CollectionView도 셀의 재사용 메커니즘을 지원하여 대량의 데이터를 효과적으로 처리할 수 있음.
TableView와 CollectionView에서 셀을 선택했을 때의 동작을 어떻게 설정하는가?
: TableView는 UITableViewDelegate 프로토콜의 tableView(:didSelectRowAt:) 메서드를 활용하여 셀 선택 시의 동작을 정의할 수 있음.
CollectionView는 UICollectionViewDelegate 프로토콜의 collectionView(:didSelectItemAt:) 메서드를 활용하여 셀 선택 시의 동작을 정의할 수 있음.