# Distributed Scheduler
- [Introduction](#section11660541593)
- [System Architecture](#section13587185873516)
- [Directory Structure](#section161941989596)
- [Repositories Involved](#section1371113476307)
## Introduction
Distributed Scheduler is used for cross-device component management. It allows the local device to access or control remote components, and enables app collaboration in distributed scenarios. Its main functions are as follows:
- Remote ability startup: Starts an ability on a remote device.
- Remote ability migration: Migrates an ability to a remote device.
- Remote ability binding: Binds an ability on a remote device.
- System service management: Provides system service startup, registration, and query on the local device as well as system service query on a remote device.
## System Architecture
**Figure 1** Distributed Scheduler architecture

## Directory Structure
```
/foundation/distributedschedule
├── dmsfwk # DMS framework (DMS is short for Distributed Manager Service, also called the Distributed Scheduler Service)
├── safwk # System ability framework
├── samgr # System ability manager
├── dms_fwk_lite # Lightweight DMS framework
├── safwk_lite # Lightweight foundation process
├── samgr_lite # Lightweight system ability manager
```
## Repositories Involved
**Distributed Scheduler subsystem**
distributedschedule\_dms\_fwk
distributedschedule\_safwk
distributedschedule\_samgr
distributedschedule\_safwk\_lite
hdistributedschedule\_samgr\_lite
distributedschedule\_dms\_fwk\_lite