Conocimiento requerido
-
La computadora también se llama computadora, es decir, el cerebro con electricidad. La computadora fue inventada para permitirle trabajar como un humano después de encenderse, y es más eficiente que un humano porque puede ser ininterrumpida durante 24 horas.
-
Los cinco componentes principales de una computadora
Controlador
Operador
Memoria
Dispositivo de entrada
Dispositivo de salida
El núcleo de la computadora realmente funciona es la CPU (controlador + unidad aritmética = unidad central de procesamiento)
-
Para que un programa sea ejecutado por una computadora, su código debe leerse desde el disco duro a la memoria, y luego la CPU obtiene instrucciones antes de ejecutar
Historial del sistema operativo
Simplemente consulte el blog: https://www.cnblogs.com/Dominic-Ji/articles/10929381.html
- Tarjeta perforada
- Sistema de procesamiento por lotes en línea
- Sistema de procesamiento por lotes fuera de línea
Tecnología multicanal
El núcleo único logra un efecto concurrente
Conocimiento requerido
-
Concurrencia
Parece que correr simultáneamente puede llamarse concurrente
-
Paralelo
Real ejecución simultánea
PD:
- Paralelo debe considerarse concurrente
- Las computadoras de un solo núcleo ciertamente no pueden lograr paralelismo, ¡pero pueden lograr concurrencia! ! !
Suplemento: asumimos directamente que un solo núcleo es un núcleo, y solo una persona trabaja, no tenga en cuenta la cantidad de núcleos en la CPU
Ilustración técnica multicanal
Ahorre el tiempo total dedicado a ejecutar múltiples programas
Conocimiento clave de tecnología multicanal
Tomando espacio y tomando tiempo
-
Multiplexación espacial
Múltiples programas comparten un conjunto de hardware de computadora
-
Multiplexación en el tiempo
Ejemplo: lavar ropa durante 30 años, cocinar durante 50 años, agua hirviendo durante 30 años
El canal único necesita 110 segundos, los canales múltiples solo necesitan el cambio largo de tarea para ahorrar tiempo
Ejemplo: jugar un juego mientras se come y se guarda el estado
Cambiar + guardar estado
La conmutación "" " (CPU) se divide en dos casos 1. Cuando un programa encuentra la operación IO, el sistema operativo privará al programa de la función de autoridad de ejecución de la CPU : mejora la utilización de la CPU y no afecta la eficiencia de ejecución del programa 2. Cuando un programa ocupa la CPU durante mucho tiempo, la atracción de la operación también privará al programa de la autoridad de ejecución de la CPU. Desventajas: redujo la eficiencia de ejecución del programa (tiempo original + tiempo de conmutación) "" "
Teoría del proceso
La diferencia entre programa y proceso
Un programa es un montón de código que se encuentra en el disco duro. Un proceso "inactivo" indica que el programa se está ejecutando y que está "en vivo".
Programación de procesos
-
Algoritmo de programación por orden de llegada
"" "Es bueno para el trabajo largo, no es bueno para el trabajo corto" ""
- Algoritmo de programación de prioridad de trabajo corto
"" "Es bueno para trabajos cortos, pero no para trabajos largos" ""
- Método de rotación de intervalo de tiempo: cuando desee abrir un nuevo programa, detendrá la ejecución actual primero para abrirle su nuevo programa
Diagrama de tres estados del proceso en ejecución
Todos los programas deben pasar por el estado listo antes de que puedan ejecutarse
La solicitud de evento incluye entrada, impresión, abrir
Bloqueo del estado al estado preparado: la entrada obtiene el valor, la lectura del archivo se completa y el tiempo de espera finaliza
Dos pares de conceptos importantes.
Síncrono y asíncrono
Describe cómo se envían las tareas.
-
Sincronización: después de enviar la tarea, espera el resultado de la tarea in situ y no hace nada durante el proceso de espera.
-
Asíncrono: después de enviar la tarea, no espera el resultado de la tarea en su lugar, y directamente hace otras cosas, esperando el resultado de la tarea
El resultado devuelto de la tarea tendrá un mecanismo de devolución de llamada asíncrono.
Bloqueo y no bloqueo
Describe el estado de ejecución del programa.
- Bloqueo: estado de bloqueo
- Sin bloqueo: estado listo, estado de ejecución
La combinación más eficiente es asíncrona + sin bloqueo
Estado ideal: debemos mantener el código que escribimos en un estado listo y en ejecución sin bloquear
Dos formas de iniciar el proceso.
La forma en que el código inicia el proceso y el hilo, la escritura del código es básicamente la misma, aprende cómo iniciar el proceso y aprende cómo iniciar el hilo
Dos maneras
desde el proceso de importación multiproceso Proceso importación tiempo def tarea (nombre): print ('% s se está ejecutando'% name) time.sleep (3) print ('% s está sobre'% name) si __name__ == '__main__': # 1 Crear un objeto p = Proceso (target = task, args = ('jason',)) # Tipo de contenedor Incluso si solo hay 1 elemento adentro, se recomienda usar comas para separar # 2 Inicie el proceso p.start () # Dígale al sistema operativo que lo ayude Crear un proceso de impresión asincrónica ('main') # La segunda forma de herencia de clase desde la importación de multiprocesamiento Clase de tiempo de importación de proceso MyProcess (Process): def run (self): print ('hello bf girl') time.sleep (1) print ('get out!') if __name__ == '__main__': p = MyProcess () p.start () print ('principal')
En el sistema operativo Windows, el proceso de creación debe crearse en el principal , ya que el proceso de creación en Windows es similar a la forma de importación del módulo, se ejecutará de arriba a abajo
La primera forma se usa más
Resumen
Crear un proceso es solicitar un espacio de memoria en la memoria y lanzar el código que debe ejecutarse. Un proceso corresponde a un espacio de memoria independiente en la memoria, y varios procesos corresponden a múltiples espacios de memoria independientes.
Los datos entre procesos no pueden interactuar directamente de manera predeterminada. Si desea interactuar, puede usar otras herramientas y módulos.
método de unión
Después de que el proceso principal espera el final del proceso secundario, continuará ejecutándose
El resultado es convertir asíncrono en síncrono.
desde el proceso de importación multiproceso Proceso de importación tiempo def tarea (nombre, n): print ('% s se está ejecutando'% name) time.sleep (n) print ('% s está sobre'% name) si __name__ == '__main__': # p1 = Proceso (target = task, args = ('jason', 1)) # p2 = Process (target = task, args = ('egon', 2)) # p3 = Process (target = task, args = ( 'tank', 3)) # start_time = time.time () # p1.start () # p2.start () # p3.start () # Solo dígale al sistema operativo que cree un proceso # # time.sleep (50000000000000000000) # # p.join () # El proceso principal espera a que el proceso hijo p termine de ejecutarse antes de continuar ejecutando # p1.join () # p2.join () # p3.join () start_time = time.hora() p_list = [] para i en el rango (1, 4): p = Process (target = task, args = ('子 进程% s'% i, i)) p.start () p_list.append (p) para p en p_list: p.join () print ('主', time.time () - start_time)
Aislamiento de datos entre procesos.
desde la importación multiprocesamiento Proceso dinero = 100 def tarea (): dinero global # 局部 修改 全局 dinero = 666 imprimir ('子', dinero) si __name__ == '__main__': p = Proceso (objetivo = tarea) p.start () p.join () print (dinero)