# data[].attributes.body
https://www.softonic.com/articulos/programas-lineas-codigo?ex=RAMP-1097.1

http://camyna.com/2008/05/14/cuantas-lineas-de-codigo-tiene-windows/

Windows 3: 2 millones
Windows95: 15 millones
Windows NT: 2 millones
Windows 98: 18 millones
Windows XP: 45 millones

Windows 7: 40 millones
Windows Vista: 50 millones
Windows 10: 80 millones

# data[].attributes.attachment_link.title
¿Cuántas líneas de código tienen los programas, apps y videojuegos más populares? - Softonic

# data[].attributes.attachment_link.description
¿Alguna vez te has preguntado qué software, programa, app o videojuego tiene más líneas de código? Sal de toda duda y descúbrelo ya mismo en este artí

# data[].attributes.body
https://thewindowsclub.blog/es/how-many-lines-of-code-are-there-in-windows-11/

Windows NT 4.0 (comprobado en 1996): 16 millones de líneas de código

Windows 2000 (2000) – 29 millones

Windows XP (2001) – 35 millones

Windows Vista (2007) – 45 millones

Windows 7 (2009) – 42 millones

Windows 8 (2012) – 50 millones

Windows 10 (2015) – 55 millones

Windows 11 - 60 a 100 millones

# data[].attributes.attachment_link.readable_text
El sistema operativo Windows es tan enorme que uno debe preguntarse qué se unió para que pareciera tan sencillo. Como tal, no sorprende que muchos usuarios quieran saber exactamente cuántas líneas de código hay en Windows 11.

Si también tienes curiosidad sobre este hecho, esta guía contiene toda la información que necesitas más extras.

¿Qué son las líneas de código?

Las líneas de código son el código fuente que compone un programa. Una sola línea de código a veces puede generar solo un lenguaje de máquina y también puede ser más, según la instrucción y el lenguaje de programación.

Las líneas de código de Windows 11 (código fuente) contienen diferentes lenguajes de programación como C++ , C, algunos códigos de lenguaje ensamblador y un poco de C# para las utilidades de modo de usuario.

Y aunque las líneas de código de Windows 11 están en el rango de decenas de millones, tenga en cuenta que esto no importa. Lo más importante aquí es la eficiencia del código, que nadie puede negar que tiene el último sistema operativo.

¿Cuántas líneas de código tiene Windows 11?

No hay una declaración oficial de Microsoft sobre la cantidad de códigos presentes en Windows 11. Esto también es cierto para sus otros sistemas operativos anteriores.

Sin embargo, algunos investigadores han demostrado que las líneas de código de Windows 11 son de 60 a 100 millones. Este rango se obtuvo al inspeccionar algunas versiones del kernel del sistema operativo y otras características.

Tenga en cuenta que la cantidad de códigos puede cambiar con el tiempo según las correcciones y algunas otras actualizaciones . Además, debes saber que la definición de la cantidad de códigos varía de un desarrollador a otro.

Entonces, algunos podrían afirmar que las líneas de código en Windows 11 son alrededor de 50 o 55 millones, que es el rango no oficial para Windows 10.

Todo se reduce al hecho de que Microsoft no publicó un documento oficial para esto, al igual que no lo hizo con los sistemas operativos anteriores.

¿Cuántas líneas de código hay en Windows 10, 8 y 7?

Las líneas de código en los sistemas operativos Windows han ido aumentando con cada versión. Desde los días de Windows NT hasta Windows 11, siempre hemos sido testigos de un aumento en el número.

A continuación se muestran algunos de los sistemas operativos más populares de Windows y su número de códigos:

Windows NT 4.0 (comprobado en 1996): 16 millones de líneas de código

Windows 2000 (2000) - 29 millones

Windows XP (2001) - 35 millones

Windows Vista (2007) - 45 millones

Windows 7 (2009) - 42 millones

Windows 8 (2012) - 50 millones

Windows 10 (2015) - 55 millones

Tenga en cuenta que los valores anteriores son aproximados y no de Microsoft. Además, al igual que Windows 11, esto aumenta con diferentes correcciones y actualizaciones.

Conocer las líneas exactas de código que componen Windows 11 es prácticamente imposible hasta que tengamos un lanzamiento oficial de Microsoft. Y para ser justos, la compañía del sistema operativo no parece lanzarlo pronto.

Entonces, tendremos que conformarnos con nuestros valores aproximados.

Siéntase libre de compartir cualquier información confiable que tenga sobre este tema con nosotros en los comentarios a continuación.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en Windows 11?

# data[].attributes.attachment_link.description
El sistema operativo Windows es tan enorme que uno debe preguntarse qué se unió para que pareciera tan sencillo. Como tal, no sorprende que muchos

# data[].attributes.body
Para Windows 3.1 (en 1992) se utilizaron algo más de 2 millones de líneas de código.

Windows XP fueron unas 40 millones de líneas.

Windows 10 está en torno a los 80 millones de líneas de código.

https://www.proydesa.org/portal/noticias/1429-cuantas-lineas-de-codigo-hay-en-aplicaciones-de-uso-diario#:~:text=Windows%2010%20est%C3%A1%20en%20torno,millones%20de%20l%C3%ADneas%20de%20c%C3%B3digo.

# data[].attributes.attachment_link.readable_text
¿Qué hay detrás de servicios, aplicaciones y dispositivos que utilizas cada día? Miles, millones, miles de millones de líneas de código.

Enciendes la computadora, ejecutas tu navegador preferido y abres muchas pestañas con webs, redes sociales y todo tipo de sitios que visitas a diario. Consultas el calendario para comprobar tus citas del día y, por supuesto, echas un vistazo al email.

Todas estas acciones son cotidianas y para la inmensa mayoría de los usuarios "lo que hay detrás" no importa, porque simplemente funciona y punto, de forma invisible. ¿Sabes de cuántas líneas de código se componen todos los servicios de Google? Más de 2.000 millones.

Rachel Potvin comentó durante una charla que Google y todos sus servicios (como son GMail, Maps, Calendar y cualquier otro que esté bajo el amparo de la gran G) forman un conjunto de más de 2.000 millones de líneas de código. Dos mil millones. Y todo se guarda en un mismo repositorio, aunque la compañía ha desarrollado su propio sistema para controlar las versiones (al que se conectan todos sus desarrolladores para introducir cambios).

Ahora bien, ¿2.000 millones de líneas de código es mucho?, ¿es poco?, ¿comparado con qué?

Para hacernos una idea, para el software del primer transbordador espacial se utilizaron 400.000 líneas de código, una simple aplicación/juego para iOS puede tener entre 20.000 y 40.000 líneas (dependiendo del caso, claro). Para poner en perspectiva qué suponen esas 2.000 millones de líneas de código de Google, podemos compararla con los números de sistemas operativos completos que todos conocemos:

Para Windows 3.1 (en 1992) se utilizaron algo más de 2 millones de líneas de código.

Todo Android son casi 12 millones de líneas de código.

Windows XP fueron unas 40 millones de líneas.

Windows 10 está en torno a los 80 millones de líneas de código.

Comparado con proyectos que se alejan de programas y software popular:

El software del Telescopio Espacial Hubble está compuesto por unas 2 millones de líneas.

Un dron militar del ejército de EEUU, 3.5 millones de líneas de código.

Un avión Boeing 787, 6.5 millones.

Todos los sistemas que componen el Gran Colisionador de Hadrones (Large Hadron Collider, LHC) son unas 50 millones de líneas.

En definitiva: sí, las 2.000 millones de líneas de código que dan forma a todos los servicios de Google es mucho. Desde Informationisbeautiful, David McCandless ha elaborado una genial infografía utilizando los datos de diversas fuentes oficiales y otros reportes.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en aplicaciones de uso diario?

# data[].attributes.attachment_link.description
Trabajamos y entregamos soluciones integrales de capacitación para abordar los complejos desafíos del mercado laboral IT. Certificaciones Cisco, Cursos Oracle.

# data[].attributes.body
https://www.proydesa.org/portal/noticias/1429-cuantas-lineas-de-codigo-hay-en-aplicaciones-de-uso-diario

Windows 3.1: +2 millones
Windows XP: ~40 millones
Windows 10: ~80 millones

# data[].attributes.attachment_link.readable_text
¿Qué hay detrás de servicios, aplicaciones y dispositivos que utilizas cada día? Miles, millones, miles de millones de líneas de código.

Enciendes la computadora, ejecutas tu navegador preferido y abres muchas pestañas con webs, redes sociales y todo tipo de sitios que visitas a diario. Consultas el calendario para comprobar tus citas del día y, por supuesto, echas un vistazo al email.

Todas estas acciones son cotidianas y para la inmensa mayoría de los usuarios "lo que hay detrás" no importa, porque simplemente funciona y punto, de forma invisible. ¿Sabes de cuántas líneas de código se componen todos los servicios de Google? Más de 2.000 millones.

Rachel Potvin comentó durante una charla que Google y todos sus servicios (como son GMail, Maps, Calendar y cualquier otro que esté bajo el amparo de la gran G) forman un conjunto de más de 2.000 millones de líneas de código. Dos mil millones. Y todo se guarda en un mismo repositorio, aunque la compañía ha desarrollado su propio sistema para controlar las versiones (al que se conectan todos sus desarrolladores para introducir cambios).

Ahora bien, ¿2.000 millones de líneas de código es mucho?, ¿es poco?, ¿comparado con qué?

Para hacernos una idea, para el software del primer transbordador espacial se utilizaron 400.000 líneas de código, una simple aplicación/juego para iOS puede tener entre 20.000 y 40.000 líneas (dependiendo del caso, claro). Para poner en perspectiva qué suponen esas 2.000 millones de líneas de código de Google, podemos compararla con los números de sistemas operativos completos que todos conocemos:

Para Windows 3.1 (en 1992) se utilizaron algo más de 2 millones de líneas de código.

Todo Android son casi 12 millones de líneas de código.

Windows XP fueron unas 40 millones de líneas.

Windows 10 está en torno a los 80 millones de líneas de código.

Comparado con proyectos que se alejan de programas y software popular:

El software del Telescopio Espacial Hubble está compuesto por unas 2 millones de líneas.

Un dron militar del ejército de EEUU, 3.5 millones de líneas de código.

Un avión Boeing 787, 6.5 millones.

Todos los sistemas que componen el Gran Colisionador de Hadrones (Large Hadron Collider, LHC) son unas 50 millones de líneas.

En definitiva: sí, las 2.000 millones de líneas de código que dan forma a todos los servicios de Google es mucho. Desde Informationisbeautiful, David McCandless ha elaborado una genial infografía utilizando los datos de diversas fuentes oficiales y otros reportes.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en aplicaciones de uso diario?

# data[].attributes.attachment_link.description
Trabajamos y entregamos soluciones integrales de capacitación para abordar los complejos desafíos del mercado laboral IT. Certificaciones Cisco, Cursos Oracle.

# data[].attributes.body
https://www.softonic.com/articulos/programas-lineas-codigo
MS-DOS- 4000 líneas de código

Windows NT- 2 millones de líneas de código

Windows 3.1- 2 millones de líneas de código

Windows 7- 40 millones líneas de código

Windows XP- 45 millones de líneas de código

Windows Vista-50 millones de líneas de código

Windows 10- 80 millones de líneas de código

# data[].attributes.attachment_link.readable_text
Puede que no lo pienses a menudo, pero detrás de cada sistema operativo, programa, aplicación o videojuego que usas a diario hay miles e incluso millones de líneas de código. Una acción tan cotidiana como hacer una búsqueda en Google o mirar tu correo electrónico en Gmail puede parecer algo sencillo pero... ¿Sabes cuántas líneas de código se esconden tras los servicios de la gran G? ¡Más de 2.000 millones! ¿Pero es eso mucho o poco? ¿Y si un programa tiene muchas líneas de código significa que es mejor?

En el artículo de hoy vamos a sumergirnos de lleno en el mundo de la programación y vamos a compartir con vosotro s cuántas líneas de código tienen los programas, videojuegos y sistemas operativos más populares del momento. ¡Avisamos que te va a sorprender!

Cómo saber cuántas líneas de código tiene un programa

Para empezar nuestro artículo, vamos a enseñarte cómo calcular las líneas de código fuente de un programa. Tranquilo porque no vas a tener que hacerlo a mano. Afortunadamente existen muchos programas con los que podrás conocer las líneas de código en apenas unos clics.

Si quieres calcular el número de líneas de código fuente de un programa, el procedimiento es bastante sencillo:

1. Descarga el código fuente del programa y descomprímelo en una carpeta

2. Descarga CLOC (Count Lines of Code) y cópialo al directorio Windows

3. Desde la ruta en la que está la carpeta con el código, escribe el comando cloc <carpeta>

CLOC reconoce más de cien lenguajes de programación, y su informe separa el código de las líneas en blanco y las líneas de comentario, lo que permite efectuar un cálculo más preciso de la cantidad de líneas del programa.

¿Más líneas de código significa que un programa es mejor?

Rotundamente no. Cuando medimos las líneas de código de cualquier software, no debemos centrarnos si un programa tiene muchas o pocas líneas de código, sino en los resultados. De hecho, la mayoría de los programadores se rigen por la máxima de que es mejor la calidad que la cantidad. No es por ello de extrañar que, al crear un programa o aplicación, se busque siempre optimizar los resultados con las menores líneas de código posibles.

No hay nada mejor que un ejemplo para demostrar este punto. Imagina que un programador crea una aplicación con 1 millón de líneas de código. Todas y cada una de las líneas de ese código están destinadas a que aparezca el mensaje "¡Hola! ¿Qué tal?" de forma continua. Como puedes ver, el que el programa cuente con gran cantidad de código no significa que sea complejo.

Ten en cuenta que dos de las máximas que utiliza todo programador que se precie son las de DRY (Don't Repeat Yourself o No Te Repitas) y de KISS (Keep It Simple, Stupid o Hazlo Sencillo, Tonto). Si bien es cierto que dependiendo del lenguaje de programación utilizado se necesitan más o menos líneas de código, siempre se intentarán optimizar los resultados.

¿Todas las líneas de código forman parte del programa?

No. Un buen programador no sólo se limita a escribir líneas de código, sino también a añadir notas y comentarios dentro de ellas. Éstas, a pesar de no formar parte del código como tal (pues no son leídas por el ordenador, móvil o consola) sí entrarían dentro del conteo de líneas. También hay que tener en cuenta que los programadores dejan un gran número de líneas en blanco que, a la larga, constituyen parte del número de palabras.

Cuántas líneas de código tienen los principales sistemas operativos

Por complejidad y número de herramientas integradas, los sistemas operativos son el software que más líneas de código suele tener. La mayoría están programados en C y ensamblador, lenguajes menos prolijos pero más eficientes.

Un ejemplo notable es Mac OS X, el sistema operativo de Apple, que contiene más de 86 millones de líneas de código. Por otro lado, Windows XP tiene 45 millones de líneas de código, mientras que una distribución completa de Linux puede superar fácilmente los 300 millones.

Bajo estas líneas vamos a ofreceros una lista con las lineas de código de algunos de los sistemas operativos más utilizados del mercado:

MS-DOS- 4000 líneas de código

Windows NT- 2 millones de líneas de código

Windows 3.1- 2 millones de líneas de código

Windows 7- 40 millones líneas de código

Windows XP- 45 millones de líneas de código

Windows Vista-50 millones de líneas de código

Windows 10- 80 millones de líneas de código

Ubuntu- 50 millones de líneas de código

MacOS X- 84 millón de líneas de código

Android- 12 millones de líneas de código

iOS- 12 millones de líneas de código

¿Cuántas líneas de código tienen los programas, apps y juegos más famosos?

Si alguna vez te has preguntado cuántas líneas de código tiene tu navegador favorito, la red social que abres en tu móvil o esa app de mensajería sin la cual no puedes vivir, has venido al lugar correcto. Y es que hoy vamos a sacarte de toda duda.

Aunque hay muchos factores que influyen en la cantidad de líneas de código de un programa (su filosofía de diseño, el lenguaje empleado, la cantidad de comentarios insertados, etc.) estos son los números aproximados de cada uno de ellos.

Navegadores Web

Suites de ofimática

Redes sociales

Apps de mensajería

Reproductores multimedia y editores de audio y vídeo

Editores de imágenes

Programas P2P

Ares Galaxy- 1.176.679 líneas de código

eMule-2.437.791 líneas de código

BitTorrent- su protocolo tiene solo 8.633 líneas de código

Vuze- 967.990 líneas de código

Aplicaciones web

WordPress- 160.636 líneas de código

Suite de Google (Gmail, Drive, Buscador, etc.): 2 billones de líneas de código

Reddit-139.659 líneas de código

Menéame- 23.190 líneas de código

Videojuegos

Así son los programas a través de sus líneas de código

Esperamos que este artículo te haya servido de ayuda para conocer un poco má s cómo funcionan las líneas de código de tus programas favoritos y cuáles tienen un mayor número de ellas. Como puedes comprobar, algunos de los resultados son simplemente sorprendentes. Y es que difícilmente alguien imaginaría que los servicios de Google tienen más de 2 billones de líneas de código. Aunque recuerda: Un mayor número de código no significa que un programa sea mejor

¿Te ha gustado lo que has leído? ¡Comparte este artículo con tus amigos en las redes sociales!

# data[].attributes.attachment_link.title
¿Cuántas líneas de código tienen los programas, apps y videojuegos más populares? - Softonic

# data[].attributes.attachment_link.description
¿Alguna vez te has preguntado qué software, programa, app o videojuego tiene más líneas de código? Sal de toda duda y descúbrelo ya mismo en este artí

# data[].attributes.body
Windows 3.1 (1993) tenía entre 4 y 5 millones de líneas de código, mientras que Windows XP tenía 45 millones de líneas de código. En comparación, Microsoft Windows 10 tiene aproximadamente 50 millones de líneas de código

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en Windows, Facebook o Google?

# data[].attributes.attachment_link.description
Las líneas de código son una manera de medir un programa o página web, de comparar su complejidad. Veamos los ejemplos más relevantes.

# data[].attributes.body
https://sabiocaldas.edu.co/wp-content/uploads/2021/02/DECIMO-ROBOTICA.pdf

El mítico Windows3.1 (1993)constaba de entre 4 y 5 millones de líneas de código. De ahí a los 45millones    de WindowsXP hay una distancia de ocho años. Es más, sólo el Service Pack1 de WindowsXP ya superaba todo el código de Windows3.1, ya que pasaba de los 6 millones de líneas de código

# data[].attributes.body
https://www.proydesa.org/portal/noticias/1429-cuantas-lineas-de-codigo-hay-en-aplicaciones-de-uso-diario

Windows 93 : 5 millones de lineas
Windows NET 4 : 12 millones de lineas aprox
Windows 2000 : 29 millones de lineas aprox
Windows XP : 39 millones de lineas aprox
Windows 7 : 39 millones de lineas aprox
Windows Vista : 50 millones de lineas aprox

# data[].attributes.attachment_link.readable_text
¿Qué hay detrás de servicios, aplicaciones y dispositivos que utilizas cada día? Miles, millones, miles de millones de líneas de código.

Enciendes la computadora, ejecutas tu navegador preferido y abres muchas pestañas con webs, redes sociales y todo tipo de sitios que visitas a diario. Consultas el calendario para comprobar tus citas del día y, por supuesto, echas un vistazo al email.

Todas estas acciones son cotidianas y para la inmensa mayoría de los usuarios "lo que hay detrás" no importa, porque simplemente funciona y punto, de forma invisible. ¿Sabes de cuántas líneas de código se componen todos los servicios de Google? Más de 2.000 millones.

Rachel Potvin comentó durante una charla que Google y todos sus servicios (como son GMail, Maps, Calendar y cualquier otro que esté bajo el amparo de la gran G) forman un conjunto de más de 2.000 millones de líneas de código. Dos mil millones. Y todo se guarda en un mismo repositorio, aunque la compañía ha desarrollado su propio sistema para controlar las versiones (al que se conectan todos sus desarrolladores para introducir cambios).

Ahora bien, ¿2.000 millones de líneas de código es mucho?, ¿es poco?, ¿comparado con qué?

Para hacernos una idea, para el software del primer transbordador espacial se utilizaron 400.000 líneas de código, una simple aplicación/juego para iOS puede tener entre 20.000 y 40.000 líneas (dependiendo del caso, claro). Para poner en perspectiva qué suponen esas 2.000 millones de líneas de código de Google, podemos compararla con los números de sistemas operativos completos que todos conocemos:

Para Windows 3.1 (en 1992) se utilizaron algo más de 2 millones de líneas de código.

Todo Android son casi 12 millones de líneas de código.

Windows XP fueron unas 40 millones de líneas.

Windows 10 está en torno a los 80 millones de líneas de código.

Comparado con proyectos que se alejan de programas y software popular:

El software del Telescopio Espacial Hubble está compuesto por unas 2 millones de líneas.

Un dron militar del ejército de EEUU, 3.5 millones de líneas de código.

Un avión Boeing 787, 6.5 millones.

Todos los sistemas que componen el Gran Colisionador de Hadrones (Large Hadron Collider, LHC) son unas 50 millones de líneas.

En definitiva: sí, las 2.000 millones de líneas de código que dan forma a todos los servicios de Google es mucho. Desde Informationisbeautiful, David McCandless ha elaborado una genial infografía utilizando los datos de diversas fuentes oficiales y otros reportes.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en aplicaciones de uso diario?

# data[].attributes.attachment_link.description
Trabajamos y entregamos soluciones integrales de capacitación para abordar los complejos desafíos del mercado laboral IT. Certificaciones Cisco, Cursos Oracle.

# data[].attributes.body
https://www.quora.com/How-many-lines-of-code-does-Microsoft-Windows-have

Acorde de Ken Gregg que trabajó en Windows NT group

Windows NT 3.1 (1993) - 5.6 million lines of source code (MLOCs)

Windows NT 3.5 (1994) - 8.4 MLOCs

Windows NT 3.51 (1995) - 10.2 MLOCs

Windows NT 4.0 (1996) - 16 MLOCs

Windows 2000 (2000) - 29 MLOCs

Windows XP (2001) - 35 MLOCs

Windows Vista (2007) - 45 MLOCs

Windows 7 (2009) - 42 MLOCs

Windows 8 (2012) - 50 MLOCs

Windows 10 (2015) - 55 MLOCs

# data[].attributes.attachment_link.title
How many lines of code does Microsoft Windows have?

# data[].attributes.attachment_link.description
Answer (1 of 2): There is no definitive count of lines in the current Windows code base, and the number of lines is changing daily as fixes are applied and features are added. And, of course, different tools and different developers have different definitions for what exactly constitutes a line o…

# data[].attributes.body
https://windowsreport.com/windows-11-how-many-lines-of-code/

Windows NT 4.0 – 16 millones
Windows 2000 - 29 millones
Windows XP – 35 millones
Windows Vista – 45 millones
Windows 7 – 42 millones
Windows 8 – 50 millones
Windows 10 – 55 millones

# data[].attributes.attachment_link.readable_text
Windows 11 lines of code are in the tens of millions range

The lines of code in Windows 11 are otherwise known as the source code that makes it work.

Lines of code in the Windows operating system change with updates and patches.

Fix Windows 11 OS errors with Fortect: This tool repairs common computer errors by replacing the problematic system files with the initial working versions. It also keeps you away from system errors, BSoDs, and repairs damages made by malware and viruses. Fix PC issues and remove viruses damage now in 3 easy steps:

The Windows operating system is so huge that you have to wonder what came together to make it look so effortless. As such, it is not surprising that many users want to know exactly how many lines of code are in Windows 11.

If you are also curious about this fact, this guide contains all the information you need plus extras.

What are lines of code?

Lines of code are the source code that makes up a program. A single line of code can sometimes generate just one machine language and can also be more, depending on the instruction and programming language.

The Windows 11 lines of code (source code) contains different programming language like C++, C, some assembly language codes, and a little bit of C# for user mode utilities.

And while Windows 11 lines of code are in the tens of millions range, note that this does not matter. The most important thing here is the efficiency of the code, which no one can deny that the latest OS has.

How many lines of code does Windows 11 have?

There is no official statement from Microsoft on the number of codes present in Windows 11. This is also true for their other operating systems before it.

However, some researchers have shown Windows 11 lines of code to be 60 to 100 million. This range was obtained from inspecting some kernel versions of the operating system and other features.

Note that the number of codes can change with time based on the fixes and some other updates. Also, you should know that the definition of the number of codes varies from one developer to another.

So, some might claim that the lines of code in Windows 11 are about 50 million or 55 million, which is the unofficial range for Windows 10.

It all boils down to the fact that Microsoft did not release an official document for this, just like it didn't do for the earlier operating systems.

Read more about this topic

How many lines of code are there in Windows 10, 8, and 7?

The lines of code in Windows operating systems have been increasing with each version. Right from the days of Windows NT down to Windows 11, we have always witnessed an increase in numbers.

Below are some of Windows' popular operating systems and their number of codes:

Windows NT 4.0 (checked in 1996) - 16 million lines of code

Windows 2000 (2000) - 29 million

Windows XP (2001) - 35 million

Windows Vista (2007) - 45 million

Windows 7 (2009) - 42 million

Windows 8 (2012) - 50 million

Windows 10 (2015) - 55 million

Note that the values above are approximated and not from Microsoft. Also, like Windows 11, this increases with different fixes and updates.

Knowing the exact lines of code that make up Windows 11 is virtually impossible till we have an official release from Microsoft. And to be fair, the OS company does not look like releasing that anytime soon.

So, we will have to make do with our approximated values.

If you use your PC for coding, check our detailed guide for the best code-writing software for Windows and Mac.

Feel free to share any reliable information you have on this topic with us in the comments below.
Still experiencing issues? SPONSORED
If the above suggestions have not solved your problem, your computer may experience more severe Windows troubles. We suggest choosing an all-in-one solution like to fix problems efficiently. After installation, just click the View&Fix button and then press Start Repair.

# data[].attributes.attachment_link.title
How Many Lines of Code are There in Windows 11?

# data[].attributes.attachment_link.description
If you are curious about how many lines of code make up Windows 11, this guide contains the right details you need to lift your curiosity.

# data[].attributes.body
https://www.proydesa.org/portal/noticias/1429-cuantas-lineas-de-codigo-hay-en-aplicaciones-de-uso-diario#:~:text=Todo%20Android%20son%20casi%2012,millones%20de%20líneas%20de%20código.
Windows NT 3.1: 5 millones de líneas
Windows NT 3.5: 7 millones de líneas
Windows NT 4.0: 11.5 millones de líneas
Windows 2000  : 24.5 millones de líneas
Windows 7     : 39.5 millones de líneas
Windows XP    : 39.5 millones de líneas
Windows 10    : 80 millones de líneas

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en aplicaciones de uso diario?

# data[].attributes.attachment_link.description
Trabajamos y entregamos soluciones integrales de capacitación para abordar los complejos desafíos del mercado laboral IT. Certificaciones Cisco, Cursos Oracle.

# data[].attributes.body
https://www.proydesa.org/portal/noticias/1429-cuantas-lineas-de-codigo-hay-en-aplicaciones-de-uso-diario

-Windows 3.1: Más de 2 millones de líneas de código.
-Windows NT 3.5: Más de 7 millones de líneas de código.
-Windows NT 4.0: Más de 11 millones de líneas de código.
-Windows 2000: Menos de 30 millones de líneas de código.
-Windows 7: 40 millones de líneas de código aprox.
-Windows XP: 40 millones de líneas de código aprox.
-Windows Vista: Menos de 50 millones de código.
-Windows 10: 80 millones de líneas de código aprox.

# data[].attributes.attachment_link.readable_text
¿Qué hay detrás de servicios, aplicaciones y dispositivos que utilizas cada día? Miles, millones, miles de millones de líneas de código.

Enciendes la computadora, ejecutas tu navegador preferido y abres muchas pestañas con webs, redes sociales y todo tipo de sitios que visitas a diario. Consultas el calendario para comprobar tus citas del día y, por supuesto, echas un vistazo al email.

Todas estas acciones son cotidianas y para la inmensa mayoría de los usuarios "lo que hay detrás" no importa, porque simplemente funciona y punto, de forma invisible. ¿Sabes de cuántas líneas de código se componen todos los servicios de Google? Más de 2.000 millones.

Rachel Potvin comentó durante una charla que Google y todos sus servicios (como son GMail, Maps, Calendar y cualquier otro que esté bajo el amparo de la gran G) forman un conjunto de más de 2.000 millones de líneas de código. Dos mil millones. Y todo se guarda en un mismo repositorio, aunque la compañía ha desarrollado su propio sistema para controlar las versiones (al que se conectan todos sus desarrolladores para introducir cambios).

Ahora bien, ¿2.000 millones de líneas de código es mucho?, ¿es poco?, ¿comparado con qué?

Para hacernos una idea, para el software del primer transbordador espacial se utilizaron 400.000 líneas de código, una simple aplicación/juego para iOS puede tener entre 20.000 y 40.000 líneas (dependiendo del caso, claro). Para poner en perspectiva qué suponen esas 2.000 millones de líneas de código de Google, podemos compararla con los números de sistemas operativos completos que todos conocemos:

Para Windows 3.1 (en 1992) se utilizaron algo más de 2 millones de líneas de código.

Todo Android son casi 12 millones de líneas de código.

Windows XP fueron unas 40 millones de líneas.

Windows 10 está en torno a los 80 millones de líneas de código.

Comparado con proyectos que se alejan de programas y software popular:

El software del Telescopio Espacial Hubble está compuesto por unas 2 millones de líneas.

Un dron militar del ejército de EEUU, 3.5 millones de líneas de código.

Un avión Boeing 787, 6.5 millones.

Todos los sistemas que componen el Gran Colisionador de Hadrones (Large Hadron Collider, LHC) son unas 50 millones de líneas.

En definitiva: sí, las 2.000 millones de líneas de código que dan forma a todos los servicios de Google es mucho. Desde Informationisbeautiful, David McCandless ha elaborado una genial infografía utilizando los datos de diversas fuentes oficiales y otros reportes.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en aplicaciones de uso diario?

# data[].attributes.attachment_link.description
Trabajamos y entregamos soluciones integrales de capacitación para abordar los complejos desafíos del mercado laboral IT. Certificaciones Cisco, Cursos Oracle.

# data[].attributes.body
https://windowsreport.com/windows-11-how-many-lines-of-code/

Windows NT 4.0 ( 1996) – 16 millones

Windows 2000 (2000) – 29 millones

Windows XP (2001) – 35 millones

Windows Vista (2007) – 45 millones

Windows 7 (2009) – 42 millones

Windows 8 (2012) – 50 millones

Windows 10 (2015) – 55 millones

# data[].attributes.attachment_link.readable_text
Windows 11 lines of code are in the tens of millions range

The lines of code in Windows 11 are otherwise known as the source code that makes it work.

Lines of code in the Windows operating system change with updates and patches.

Fix Windows 11 OS errors with Fortect: This tool repairs common computer errors by replacing the problematic system files with the initial working versions. It also keeps you away from system errors, BSoDs, and repairs damages made by malware and viruses. Fix PC issues and remove viruses damage now in 3 easy steps:

The Windows operating system is so huge that you have to wonder what came together to make it look so effortless. As such, it is not surprising that many users want to know exactly how many lines of code are in Windows 11.

If you are also curious about this fact, this guide contains all the information you need plus extras.

What are lines of code?

Lines of code are the source code that makes up a program. A single line of code can sometimes generate just one machine language and can also be more, depending on the instruction and programming language.

The Windows 11 lines of code (source code) contains different programming language like C++, C, some assembly language codes, and a little bit of C# for user mode utilities.

And while Windows 11 lines of code are in the tens of millions range, note that this does not matter. The most important thing here is the efficiency of the code, which no one can deny that the latest OS has.

How many lines of code does Windows 11 have?

There is no official statement from Microsoft on the number of codes present in Windows 11. This is also true for their other operating systems before it.

However, some researchers have shown Windows 11 lines of code to be 60 to 100 million. This range was obtained from inspecting some kernel versions of the operating system and other features.

Note that the number of codes can change with time based on the fixes and some other updates. Also, you should know that the definition of the number of codes varies from one developer to another.

So, some might claim that the lines of code in Windows 11 are about 50 million or 55 million, which is the unofficial range for Windows 10.

It all boils down to the fact that Microsoft did not release an official document for this, just like it didn't do for the earlier operating systems.

Read more about this topic

How many lines of code are there in Windows 10, 8, and 7?

The lines of code in Windows operating systems have been increasing with each version. Right from the days of Windows NT down to Windows 11, we have always witnessed an increase in numbers.

Below are some of Windows' popular operating systems and their number of codes:

Windows NT 4.0 (checked in 1996) - 16 million lines of code

Windows 2000 (2000) - 29 million

Windows XP (2001) - 35 million

Windows Vista (2007) - 45 million

Windows 7 (2009) - 42 million

Windows 8 (2012) - 50 million

Windows 10 (2015) - 55 million

Note that the values above are approximated and not from Microsoft. Also, like Windows 11, this increases with different fixes and updates.

Knowing the exact lines of code that make up Windows 11 is virtually impossible till we have an official release from Microsoft. And to be fair, the OS company does not look like releasing that anytime soon.

So, we will have to make do with our approximated values.

If you use your PC for coding, check our detailed guide for the best code-writing software for Windows and Mac.

Feel free to share any reliable information you have on this topic with us in the comments below.
Still experiencing issues? SPONSORED
If the above suggestions have not solved your problem, your computer may experience more severe Windows troubles. We suggest choosing an all-in-one solution like to fix problems efficiently. After installation, just click the View&Fix button and then press Start Repair.

# data[].attributes.attachment_link.title
How Many Lines of Code are There in Windows 11?

# data[].attributes.attachment_link.description
If you are curious about how many lines of code make up Windows 11, this guide contains the right details you need to lift your curiosity.

# data[].attributes.body
Windows 3.11 = 3 millones de líneas de código

Windows 95 = 15 millones de líneas de código

Windows 98 = 18 millones de líneas de código

Windows XP = 40 millones de líneas de código

Windows Vista = 50 millones de líneas de código

Windows 1.0: Aproximadamente 55,000 líneas de código.

Windows 7: Alrededor de 40-50 millones de líneas de código.

Windows 10: Estimaciones sugieren que tiene más de 50 millones de líneas de código.

# data[].attributes.attachment_link.title
¿Cuantas líneas de código tiene Windows? - Camyna. Asesoría-Consultoría-web 2.0-wordpress Blog de @gmolino

# data[].attributes.attachment_link.description
Según leo aqui, Windows 3.11 = 3 millones de líneas de código Windows 95 = 15 millones de líneas de código Windows 98 = 18 millones de líneas de código Windows XP = 40 millones de líneas de código Windows Vista = 50 millones de líneas de código Ubuntu = 120 millones de líneas de … Sigue leyendo ¿Cua…

# data[].attributes.body
https://www.softonic.com/articulos/programas-lineas-codigo

MS-DOS- 4000 líneas de código

Windows NT- 2 millones de líneas de código

Windows 3.1- 2 millones de líneas de código

Windows 7- 40 millones líneas de código

Windows XP- 45 millones de líneas de código

Windows Vista-50 millones de líneas de código

Windows 10- 80 millones de líneas de código

# data[].attributes.attachment_link.readable_text
Puede que no lo pienses a menudo, pero detrás de cada sistema operativo, programa, aplicación o videojuego que usas a diario hay miles e incluso millones de líneas de código. Una acción tan cotidiana como hacer una búsqueda en Google o mirar tu correo electrónico en Gmail puede parecer algo sencillo pero... ¿Sabes cuántas líneas de código se esconden tras los servicios de la gran G? ¡Más de 2.000 millones! ¿Pero es eso mucho o poco? ¿Y si un programa tiene muchas líneas de código significa que es mejor?

En el artículo de hoy vamos a sumergirnos de lleno en el mundo de la programación y vamos a compartir con vosotro s cuántas líneas de código tienen los programas, videojuegos y sistemas operativos más populares del momento. ¡Avisamos que te va a sorprender!

Cómo saber cuántas líneas de código tiene un programa

Para empezar nuestro artículo, vamos a enseñarte cómo calcular las líneas de código fuente de un programa. Tranquilo porque no vas a tener que hacerlo a mano. Afortunadamente existen muchos programas con los que podrás conocer las líneas de código en apenas unos clics.

Si quieres calcular el número de líneas de código fuente de un programa, el procedimiento es bastante sencillo:

1. Descarga el código fuente del programa y descomprímelo en una carpeta

2. Descarga CLOC (Count Lines of Code) y cópialo al directorio Windows

3. Desde la ruta en la que está la carpeta con el código, escribe el comando cloc <carpeta>

CLOC reconoce más de cien lenguajes de programación, y su informe separa el código de las líneas en blanco y las líneas de comentario, lo que permite efectuar un cálculo más preciso de la cantidad de líneas del programa.

¿Más líneas de código significa que un programa es mejor?

Rotundamente no. Cuando medimos las líneas de código de cualquier software, no debemos centrarnos si un programa tiene muchas o pocas líneas de código, sino en los resultados. De hecho, la mayoría de los programadores se rigen por la máxima de que es mejor la calidad que la cantidad. No es por ello de extrañar que, al crear un programa o aplicación, se busque siempre optimizar los resultados con las menores líneas de código posibles.

No hay nada mejor que un ejemplo para demostrar este punto. Imagina que un programador crea una aplicación con 1 millón de líneas de código. Todas y cada una de las líneas de ese código están destinadas a que aparezca el mensaje "¡Hola! ¿Qué tal?" de forma continua. Como puedes ver, el que el programa cuente con gran cantidad de código no significa que sea complejo.

Ten en cuenta que dos de las máximas que utiliza todo programador que se precie son las de DRY (Don't Repeat Yourself o No Te Repitas) y de KISS (Keep It Simple, Stupid o Hazlo Sencillo, Tonto). Si bien es cierto que dependiendo del lenguaje de programación utilizado se necesitan más o menos líneas de código, siempre se intentarán optimizar los resultados.

¿Todas las líneas de código forman parte del programa?

No. Un buen programador no sólo se limita a escribir líneas de código, sino también a añadir notas y comentarios dentro de ellas. Éstas, a pesar de no formar parte del código como tal (pues no son leídas por el ordenador, móvil o consola) sí entrarían dentro del conteo de líneas. También hay que tener en cuenta que los programadores dejan un gran número de líneas en blanco que, a la larga, constituyen parte del número de palabras.

Cuántas líneas de código tienen los principales sistemas operativos

Por complejidad y número de herramientas integradas, los sistemas operativos son el software que más líneas de código suele tener. La mayoría están programados en C y ensamblador, lenguajes menos prolijos pero más eficientes.

Un ejemplo notable es Mac OS X, el sistema operativo de Apple, que contiene más de 86 millones de líneas de código. Por otro lado, Windows XP tiene 45 millones de líneas de código, mientras que una distribución completa de Linux puede superar fácilmente los 300 millones.

Bajo estas líneas vamos a ofreceros una lista con las lineas de código de algunos de los sistemas operativos más utilizados del mercado:

MS-DOS- 4000 líneas de código

Windows NT- 2 millones de líneas de código

Windows 3.1- 2 millones de líneas de código

Windows 7- 40 millones líneas de código

Windows XP- 45 millones de líneas de código

Windows Vista-50 millones de líneas de código

Windows 10- 80 millones de líneas de código

Ubuntu- 50 millones de líneas de código

MacOS X- 84 millón de líneas de código

Android- 12 millones de líneas de código

iOS- 12 millones de líneas de código

¿Cuántas líneas de código tienen los programas, apps y juegos más famosos?

Si alguna vez te has preguntado cuántas líneas de código tiene tu navegador favorito, la red social que abres en tu móvil o esa app de mensajería sin la cual no puedes vivir, has venido al lugar correcto. Y es que hoy vamos a sacarte de toda duda.

Aunque hay muchos factores que influyen en la cantidad de líneas de código de un programa (su filosofía de diseño, el lenguaje empleado, la cantidad de comentarios insertados, etc.) estos son los números aproximados de cada uno de ellos.

Navegadores Web

Suites de ofimática

Redes sociales

Apps de mensajería

Reproductores multimedia y editores de audio y vídeo

Editores de imágenes

Programas P2P

Ares Galaxy- 1.176.679 líneas de código

eMule-2.437.791 líneas de código

BitTorrent- su protocolo tiene solo 8.633 líneas de código

Vuze- 967.990 líneas de código

Aplicaciones web

WordPress- 160.636 líneas de código

Suite de Google (Gmail, Drive, Buscador, etc.): 2 billones de líneas de código

Reddit-139.659 líneas de código

Menéame- 23.190 líneas de código

Videojuegos

Así son los programas a través de sus líneas de código

Esperamos que este artículo te haya servido de ayuda para conocer un poco má s cómo funcionan las líneas de código de tus programas favoritos y cuáles tienen un mayor número de ellas. Como puedes comprobar, algunos de los resultados son simplemente sorprendentes. Y es que difícilmente alguien imaginaría que los servicios de Google tienen más de 2 billones de líneas de código. Aunque recuerda: Un mayor número de código no significa que un programa sea mejor

¿Te ha gustado lo que has leído? ¡Comparte este artículo con tus amigos en las redes sociales!

# data[].attributes.attachment_link.title
¿Cuántas líneas de código tienen los programas, apps y videojuegos más populares? - Softonic

# data[].attributes.attachment_link.description
¿Alguna vez te has preguntado qué software, programa, app o videojuego tiene más líneas de código? Sal de toda duda y descúbrelo ya mismo en este artí

# data[].attributes.body
Windows 3.1: >2M
Windows NT 3.1: >4M
Windows NT 3.5: >7M
Windows NT 4.0: >11M
Windows 2000: >28M
Windows 7: >37M
Windows XP: 40M
Windows 10: ~80M

# data[].attributes.attachment_link.readable_text
¿Qué hay detrás de servicios, aplicaciones y dispositivos que utilizas cada día? Miles, millones, miles de millones de líneas de código.

Enciendes la computadora, ejecutas tu navegador preferido y abres muchas pestañas con webs, redes sociales y todo tipo de sitios que visitas a diario. Consultas el calendario para comprobar tus citas del día y, por supuesto, echas un vistazo al email.

Todas estas acciones son cotidianas y para la inmensa mayoría de los usuarios "lo que hay detrás" no importa, porque simplemente funciona y punto, de forma invisible. ¿Sabes de cuántas líneas de código se componen todos los servicios de Google? Más de 2.000 millones.

Rachel Potvin comentó durante una charla que Google y todos sus servicios (como son GMail, Maps, Calendar y cualquier otro que esté bajo el amparo de la gran G) forman un conjunto de más de 2.000 millones de líneas de código. Dos mil millones. Y todo se guarda en un mismo repositorio, aunque la compañía ha desarrollado su propio sistema para controlar las versiones (al que se conectan todos sus desarrolladores para introducir cambios).

Ahora bien, ¿2.000 millones de líneas de código es mucho?, ¿es poco?, ¿comparado con qué?

Para hacernos una idea, para el software del primer transbordador espacial se utilizaron 400.000 líneas de código, una simple aplicación/juego para iOS puede tener entre 20.000 y 40.000 líneas (dependiendo del caso, claro). Para poner en perspectiva qué suponen esas 2.000 millones de líneas de código de Google, podemos compararla con los números de sistemas operativos completos que todos conocemos:

Para Windows 3.1 (en 1992) se utilizaron algo más de 2 millones de líneas de código.

Todo Android son casi 12 millones de líneas de código.

Windows XP fueron unas 40 millones de líneas.

Windows 10 está en torno a los 80 millones de líneas de código.

Comparado con proyectos que se alejan de programas y software popular:

El software del Telescopio Espacial Hubble está compuesto por unas 2 millones de líneas.

Un dron militar del ejército de EEUU, 3.5 millones de líneas de código.

Un avión Boeing 787, 6.5 millones.

Todos los sistemas que componen el Gran Colisionador de Hadrones (Large Hadron Collider, LHC) son unas 50 millones de líneas.

En definitiva: sí, las 2.000 millones de líneas de código que dan forma a todos los servicios de Google es mucho. Desde Informationisbeautiful, David McCandless ha elaborado una genial infografía utilizando los datos de diversas fuentes oficiales y otros reportes.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en aplicaciones de uso diario?

# data[].attributes.attachment_link.description
Trabajamos y entregamos soluciones integrales de capacitación para abordar los complejos desafíos del mercado laboral IT. Certificaciones Cisco, Cursos Oracle.

# data[].attributes.body
Windows NT 3.1: 3+ millones
Windows NT 3.5: 7+ millones
Windows NT 4.0: 10+ millones
Windows XP: 40 millones
Windows 7: 40 millones
Windows Vista: 50 millones

# data[].attributes.attachment_link.readable_text
¿Qué hay detrás de servicios, aplicaciones y dispositivos que utilizas cada día? Miles, millones, miles de millones de líneas de código.

Enciendes la computadora, ejecutas tu navegador preferido y abres muchas pestañas con webs, redes sociales y todo tipo de sitios que visitas a diario. Consultas el calendario para comprobar tus citas del día y, por supuesto, echas un vistazo al email.

Todas estas acciones son cotidianas y para la inmensa mayoría de los usuarios "lo que hay detrás" no importa, porque simplemente funciona y punto, de forma invisible. ¿Sabes de cuántas líneas de código se componen todos los servicios de Google? Más de 2.000 millones.

Rachel Potvin comentó durante una charla que Google y todos sus servicios (como son GMail, Maps, Calendar y cualquier otro que esté bajo el amparo de la gran G) forman un conjunto de más de 2.000 millones de líneas de código. Dos mil millones. Y todo se guarda en un mismo repositorio, aunque la compañía ha desarrollado su propio sistema para controlar las versiones (al que se conectan todos sus desarrolladores para introducir cambios).

Ahora bien, ¿2.000 millones de líneas de código es mucho?, ¿es poco?, ¿comparado con qué?

Para hacernos una idea, para el software del primer transbordador espacial se utilizaron 400.000 líneas de código, una simple aplicación/juego para iOS puede tener entre 20.000 y 40.000 líneas (dependiendo del caso, claro). Para poner en perspectiva qué suponen esas 2.000 millones de líneas de código de Google, podemos compararla con los números de sistemas operativos completos que todos conocemos:

Para Windows 3.1 (en 1992) se utilizaron algo más de 2 millones de líneas de código.

Todo Android son casi 12 millones de líneas de código.

Windows XP fueron unas 40 millones de líneas.

Windows 10 está en torno a los 80 millones de líneas de código.

Comparado con proyectos que se alejan de programas y software popular:

El software del Telescopio Espacial Hubble está compuesto por unas 2 millones de líneas.

Un dron militar del ejército de EEUU, 3.5 millones de líneas de código.

Un avión Boeing 787, 6.5 millones.

Todos los sistemas que componen el Gran Colisionador de Hadrones (Large Hadron Collider, LHC) son unas 50 millones de líneas.

En definitiva: sí, las 2.000 millones de líneas de código que dan forma a todos los servicios de Google es mucho. Desde Informationisbeautiful, David McCandless ha elaborado una genial infografía utilizando los datos de diversas fuentes oficiales y otros reportes.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código hay en aplicaciones de uso diario?

# data[].attributes.attachment_link.description
Trabajamos y entregamos soluciones integrales de capacitación para abordar los complejos desafíos del mercado laboral IT. Certificaciones Cisco, Cursos Oracle.

# data[].attributes.body
The number of lines of code in different versions of Windows and other operating systems varies. Here is what the search results show:

Windows 10: According to estimates, Windows 10 has around 50 million lines of code
https://answers.microsoft.com/en-us/windows/forum/all/windows-10-lines-of-code/a8f77f5c-0661-4895-9c77-2efd42429409
https://interestingengineering.com/lists/whats-the-biggest-software-package-by-lines-of-code
https://droidrant.com/how-many-lines-of-code-in-windows-10/

Windows 11: The unofficial range for Windows 11 is about 50-55 million lines of code
https://windowsreport.com/windows-11-how-many-lines-of-code/
https://keys.direct/blogs/windows-11/how-many-lines-of-code-in-windows-11

Windows XP and Windows 7: According to some estimates, these operating systems come in at upwards of about 40 million lines of code
https://interestingengineering.com/lists/whats-the-biggest-software-package-by-lines-of-code

Google: Google's software needed to run all of its internet services spans some 2 billion lines of code
https://www.wired.com/2015/09/google-2-billion-lines-codeand-one-place/

Other operating systems: The number of lines of code in other operating systems is not mentioned in the search results.

# data[].attributes.body
https://www.informationisbeautiful.net/visualizations/million-lines-of-code/
Windows 3.1 2.5M
Windows NT 3.1 4.5M
Windows NT 3.5 7.5M
Windows NT 4.0 11M
Windows 2000 29M
Windows 7 40M
Windows XP 40M
Windows Vista 50M
https://www.proydesa.org/portal/noticias/1429-cuantas-lineas-de-codigo-hay-en-aplicaciones-de-uso-diario
Windows 10 80M

# data[].attributes.body
https://www.muycomputer.com/2020/10/01/codigo-fuente-de-windows-xp-2/

Codigo de Windows XP filtrado además que contenía código fuente de otros sistemas como Windows Server 2003.

# data[].attributes.attachment_link.readable_text
El código fuente de Windows XP filtrado la semana pasada es muy real. Y también el de Windows Server 2003. Faltan componentes y no están en un estado totalmente utilizable, pero el código es auténtico y puede compilarse, según los análisis del mismo.

La noticia del supuesto filtrado del código fuente de Windows XP y el de Windows Server 2003, fue portada en medio mundo ante las consecuencias que podía tener en materia de seguridad informática. Microsoft tardó varios días en responder y lo hizo con un críptico mensaje a " Estamos investigando el asunto".

Microsoft produce tanto código propietario como código abierto, pero el de sus sistemas operativos es de los primeros, se guarda celosamente y no está disponible públicamente. Aún así, no es la primera vez que parte del código fuente de Windows se filtra en línea y en el pasado vimos trozos de Windows NT 3.5, Windows 2000, Windows 10 y la variante utilizada en las Xbox.

El código fuente de Windows XP es auténtico

A falta de una respuesta oficial que seguramente nunca llegue por motivos obvios, es seguro que el archivo filtrado (junto a un segundo paquete que se ha compartido a buen ritmo en las redes torrent y que (supuestamente) incluye código fuente de MS DOS, Windows 2000, CE, Embedded o NT) ha sido descargado por "malos" y "buenos" para intentar verificar su autenticidad.

ZDNet habló con varios ingenieros de software de Microsoft actuales y anteriores para confirmar la validez de los archivos filtrados. En ese momento, las fuentes dijeron que por la primera revisión el código parecía estar incompleto, pero que los componentes que analizaron parecían auténticos.

Un técnico TI que utiliza el pseudónimo NTDEV en redes sociales entrevistado por el medio, solo uno de los millones de usuarios que han descargado los archivos filtrados) confirma las primeras impresiones (. "Los informes eran ciertos. Parece que faltan algunos componentes, como winlogon.exe y muchos controladores, pero es auténtico y puede compilarse".

"Ciertos archivos, como el kernel y el Explorer, se pueden compilar fácilmente. He probado algunos programas de la fuente compilada de XP y parece que son idénticos a las versiones comerciales de Windows", asegura. "Los componentes que faltan provocan que el código XP filtrado aún no está en un estado totalmente utilizable, como para un reemplazo completo del sistema operativo, pero que el código es, sin embargo, auténtico". NTDEV cree que "la fuente se puede utilizar para compilar todos los SKU del sistema".

Y también el de Windows Server 2003

La filtración contenía código fuente de otros sistemas como Windows Server 2003 y según el técnico también es verídico. "El código filtrado de Windows Server 2003 es en realidad más completo que el de XP, pero también carece de algunos componentes como Winlogon", seguramente debido al hecho de que puede contener el código del proceso de activación del sistema.

NTDEV dice que, a diferencia de XP, ha conseguido "crear una instalación viable de Windows Server sustituyendo algunos archivos como el mencionado Winlogon y otros que faltan, la mayoría archivos de ayuda y controladores". El técnico ha publicado un par de vídeos en YouTube sobre este caso. Los vídeos han sido cancelados debido a una reclamación de derechos de autor realizada por Microsoft Corporation. No es buena señal, ya que indica que va por el buen camino.

El problema es que los "malos" estarán siguiendo caminos paralelos. Windows XP cumplirá el año próximo 20 años desde su lanzamiento y hace tiempo (en 2014) que terminó su ciclo de vida y se quedó sin soporte técnico. Sin embargo, todavía se usa, especialmente en empresas que tienen equipos con este sistema conectados a sus redes.

Además, la exposición de su código fuente es un potencial riesgo de seguridad ya que parte de ese código se utiliza en sistemas como Windows 7 e incluso en otros sistemas activos como Windows 10 para soportar componentes legado y otro funcionamiento interno de todos los sistemas de Microsoft.

# data[].attributes.attachment_link.title
El código fuente de Windows XP filtrado es auténtico

# data[].attributes.attachment_link.description
El código fuente de Windows XP filtrado la semana pasada es muy real. Y también el de Windows Server 2003. Faltan componentes y no están en un estado totalmente utilizable, pero el código es auténtico y puede compilarse, según los análisis del mismo.

# data[].attributes.body
https://www.xataka.com.mx/seguridad/codigo-fuente-windows-xp-se-ha-filtrado-esto-sabemos-como-sucedio-sus-posibles-implicaciones

Windows XP se filtro su código fuente

# data[].attributes.attachment_link.readable_text
El código fuente completo de Windows XP se ha filtrado en línea. Un torrent de 43 GB que compila varios archivos ha sido publicado en 4chan, reporta Bleeping Computer, e incluye código fuente y archivos de otros sistemas operativos de Microsoft.

En el torrent se pueden encontrar archivos de:

MS DOS 3.30

MS DOS 6.0

Windows 2000

Windows CE 3

Windows CE 4

Windows CE 5

Windows Embedded 7

Windows Embedded CE

Windows NT 3.5

Windows NT 4

Los códigos fuente completos de Windows XP y Windows Server 2003 se han filtrado en otro archivo de 2.9 GB, el cual se ha compartido en privado por muchos años entre hackers, asegura el filtrador. De esta manera, la filtración de ahora es la primera vez que el código fuente completo de un sistema operativo de Microsoft se comparte de forma pública.

Bleeping Computer afirma que ha visto el material, pero no tiene manera de confirmar si en verdad se trata del código fuente de Windows XP. Sin embargo, la confirmación viene de parte de The Verge: sí, el material que se comparte es legítimo, es el código fuente de Windows XP.

Posible amenaza a la seguridad de millones de usuarios

Actualmente hay millones de usuarios que aún utilizan Windows XP, principalmente compañías, e incluso el presidente ruso Vladimir Putin, casi 20 años después de su lanzamiento, y a pesar de que dejó de recibir actualizaciones en 2014 y su soporte oficialmente terminó el año pasado.

Según cifras de NetMarketShare correspondientes a agosto de este año, Windows XP tiene una presencia de mercado de 1.26%, equivalentes a aproximadamente 25.2 millones de usuarios.

Desde The Verge apuntan que esta filtración no representa una posible amenaza para aquellas compañías que aún utilizan Windows XP. Sin embargo, existe la posibilidad de que el código fuente ayude a encontrar vulnerabilidades que puedan ser utilizadas para sacar provecho de sus utilidades, por ejemplo en cajeros automáticos que aún utilizan Windows XP. Por otro lado, se dice que Windows 10 hereda mucho código de Windows XP, lo que lleva a la misma situación del descubrimiento de vulnerabilidades y su explotación.

Desde Xataka nos hemos puesto en contacto con Microsoft para esclarecer la situación de la seguridad de los usuarios que aún utilizan Windows XP. En cuanto tengamos respuesta actualizaremos este post con la información.

# data[].attributes.attachment_link.title
El código fuente de Windows XP se ha filtrado: esto sabemos de cómo sucedió y sus posibles implicaciones

# data[].attributes.attachment_link.description
El código fuente completo de Windows XP se ha filtrado en línea. Un torrent de 43 GB que compila varios archivos ha sido publicado en 4chan, reporta Bleeping...

# data[].attributes.body
https://github.com/0x5bfa/NT5.1

# data[].attributes.attachment_link.title
GitHub - 0x5bfa/NT5.1: Windows NT 5.0 kernel source code.

# data[].attributes.attachment_link.description
Windows NT 5.0 kernel source code. Contribute to 0x5bfa/NT5.1 development by creating an account on GitHub.

# data[].attributes.attachment_link.readable_text
BetaArchive Database

Your search returned over 100 rows. We have limited the results shown to a maximum of 2000 entries.
Consider refining your search further by separating search terms with a comma. For example 'Windows xp, professional'.

Search: Showing 2000 results for "windows 10"

# data[].attributes.attachment_link.title
BetaArchive Search - BetaArchive Release DB

# data[].attributes.body
https://www.elespanol.com/omicrono/software/20200925/codigo-fuente-windows-xp-filtra-internet-noticia/523448499_0.html

# data[].attributes.attachment_link.readable_text
El código fuente de Windows XP filtrado la semana pasada es muy real. Y también el de Windows Server 2003. Faltan componentes y no están en un estado totalmente utilizable, pero el código es auténtico y puede compilarse, según los análisis del mismo.

La noticia del supuesto filtrado del código fuente de Windows XP y el de Windows Server 2003, fue portada en medio mundo ante las consecuencias que podía tener en materia de seguridad informática. Microsoft tardó varios días en responder y lo hizo con un críptico mensaje a " Estamos investigando el asunto".

Microsoft produce tanto código propietario como código abierto, pero el de sus sistemas operativos es de los primeros, se guarda celosamente y no está disponible públicamente. Aún así, no es la primera vez que parte del código fuente de Windows se filtra en línea y en el pasado vimos trozos de Windows NT 3.5, Windows 2000, Windows 10 y la variante utilizada en las Xbox.

El código fuente de Windows XP es auténtico

A falta de una respuesta oficial que seguramente nunca llegue por motivos obvios, es seguro que el archivo filtrado (junto a un segundo paquete que se ha compartido a buen ritmo en las redes torrent y que (supuestamente) incluye código fuente de MS DOS, Windows 2000, CE, Embedded o NT) ha sido descargado por "malos" y "buenos" para intentar verificar su autenticidad.

ZDNet habló con varios ingenieros de software de Microsoft actuales y anteriores para confirmar la validez de los archivos filtrados. En ese momento, las fuentes dijeron que por la primera revisión el código parecía estar incompleto, pero que los componentes que analizaron parecían auténticos.

Un técnico TI que utiliza el pseudónimo NTDEV en redes sociales entrevistado por el medio, solo uno de los millones de usuarios que han descargado los archivos filtrados) confirma las primeras impresiones (. "Los informes eran ciertos. Parece que faltan algunos componentes, como winlogon.exe y muchos controladores, pero es auténtico y puede compilarse".

"Ciertos archivos, como el kernel y el Explorer, se pueden compilar fácilmente. He probado algunos programas de la fuente compilada de XP y parece que son idénticos a las versiones comerciales de Windows", asegura. "Los componentes que faltan provocan que el código XP filtrado aún no está en un estado totalmente utilizable, como para un reemplazo completo del sistema operativo, pero que el código es, sin embargo, auténtico". NTDEV cree que "la fuente se puede utilizar para compilar todos los SKU del sistema".

Y también el de Windows Server 2003

La filtración contenía código fuente de otros sistemas como Windows Server 2003 y según el técnico también es verídico. "El código filtrado de Windows Server 2003 es en realidad más completo que el de XP, pero también carece de algunos componentes como Winlogon", seguramente debido al hecho de que puede contener el código del proceso de activación del sistema.

NTDEV dice que, a diferencia de XP, ha conseguido "crear una instalación viable de Windows Server sustituyendo algunos archivos como el mencionado Winlogon y otros que faltan, la mayoría archivos de ayuda y controladores". El técnico ha publicado un par de vídeos en YouTube sobre este caso. Los vídeos han sido cancelados debido a una reclamación de derechos de autor realizada por Microsoft Corporation. No es buena señal, ya que indica que va por el buen camino.

El problema es que los "malos" estarán siguiendo caminos paralelos. Windows XP cumplirá el año próximo 20 años desde su lanzamiento y hace tiempo (en 2014) que terminó su ciclo de vida y se quedó sin soporte técnico. Sin embargo, todavía se usa, especialmente en empresas que tienen equipos con este sistema conectados a sus redes.

Además, la exposición de su código fuente es un potencial riesgo de seguridad ya que parte de ese código se utiliza en sistemas como Windows 7 e incluso en otros sistemas activos como Windows 10 para soportar componentes legado y otro funcionamiento interno de todos los sistemas de Microsoft.

# data[].attributes.attachment_link.title
El código fuente de Windows XP filtrado es auténtico

# data[].attributes.attachment_link.description
El código fuente de Windows XP filtrado la semana pasada es muy real. Y también el de Windows Server 2003. Faltan componentes y no están en un estado totalmente utilizable, pero el código es auténtico y puede compilarse, según los análisis del mismo.

# data[].attributes.body
https://www.softzone.es/noticias/windows/microsoft-censura-pruebas-codigo-fuente-windows-xp/

# data[].attributes.attachment_link.readable_text
Es cierto que Windows XP es un sistema operativo que, desde 2014, no tiene soporte y está totalmente abandonado por parte de Microsoft. Sin embargo, este SO comparte, a nivel de Kernel, muchas cosas con las versiones actuales del sistema operativo. Y no solo eso, sino que disponer del código puede permitir a los piratas informáticos encontrar vulnerabilidades (o las famosas puertas traseras de la NSA) que pongan en peligro incluso a los usuarios de Windows 10.

También se puede aprovechar ese código para crear un nuevo sistema operativo ( Windows XP Community Edition, por ejemplo), mantenido por la comunidad al más puro estilo Linux. Las posibilidades son infinitas. Sin embargo, Microsoft no va a permitirlo.

El código fuente de Windows XP es real, y se puede compilar

Un desarrollador de Windows ha conseguido compilar y ejecutar estos sistemas operativos. En el caso de XP, por ejemplo, ha tenido problemas al encontrarse con la falta de archivos críticos como, por ejemplo, winlogon.exe. Se puede compilar añadiendo manualmente esos archivos, aunque, obviamente, no está el 100% del código fuente de este SO. Al contrario de lo que pasa con Windows Server 2003.

En el caso de la versión de servidor, Windows Server 2003 ha compilado sin problemas, e incluso generado la ISO e instalado y arrancado en una máquina virtual. El código de Server 2003 es completo, mientras que al de XP, según parece, le faltan algunas piezas clave.

Por supuesto, el desarrollador ha estado compartiendo toda la información a través de su cuenta de Twitter ( NTDEV, que ahora mismo está bloqueada "sospechosamente"). Y también publicó vídeos demostrando cómo el sistema operativo compilaba y funcionaba sin problemas.

Sin embargo, los vídeos no han tardado mucho en desaparecer.

Microsoft elimina los vídeos de YouTube: algo quiere ocultar

Este desarrollador subió a YouTube dos vídeos: uno sobre XP y otro sobre Server 2003. Sin embargo, pocas horas más tarde, estos vídeos desaparecían de la red social, apareciendo un mensaje indicando que "el vídeo no está disponible; este vídeo ya no está disponible debido a una reclamación de derechos de autor realizada por Microsoft Corporation.".

En los vídeos no se facilitaban enlaces de descarga ni nada que pudiera comprometer a Microsoft. Simplemente se usaba ese código, que cualquiera puede conseguir fácilmente en cuestión de minutos, y ejecutaba su compilador para ver hasta dónde llegaba.

Sin embargo, Microsoft ha sido radical con ello, y ha obligado a Google a eliminar los vídeos. Aunque, por suerte, se pueden encontrar de otras formas.

Está claro que Microsoft va a empezar una cruzada para censurar todo aquello que hable de Windows XP y de su código fuente. Nosotros, por nuestra parte, tenemos ganas de ver qué hace la comunidad con este código. Puede que un sistema propio basado en XP. O puede que algunas de las características de este sistema se migren a Linux.

El tiempo lo dirá. Mientras tanto, si queremos, podemos descargar la ISO oficial de Windows XP en español para instalar este sistema en cualquier PC o máquina virtual.

# data[].attributes.attachment_link.title
Microsoft censura las pruebas sobre el código fuente de Windows XP

# data[].attributes.attachment_link.description
Consigue compilar y ejecutar Windows XP a partir del código fuente filtrado, pero Microsoft empieza a ocultarlo y censurarlo.

# data[].attributes.body
https://www.muycomputer.com/2020/10/01/codigo-fuente-de-windows-xp-2/

# data[].attributes.attachment_link.readable_text
El código fuente de Windows XP filtrado la semana pasada es muy real. Y también el de Windows Server 2003. Faltan componentes y no están en un estado totalmente utilizable, pero el código es auténtico y puede compilarse, según los análisis del mismo.

La noticia del supuesto filtrado del código fuente de Windows XP y el de Windows Server 2003, fue portada en medio mundo ante las consecuencias que podía tener en materia de seguridad informática. Microsoft tardó varios días en responder y lo hizo con un críptico mensaje a " Estamos investigando el asunto".

Microsoft produce tanto código propietario como código abierto, pero el de sus sistemas operativos es de los primeros, se guarda celosamente y no está disponible públicamente. Aún así, no es la primera vez que parte del código fuente de Windows se filtra en línea y en el pasado vimos trozos de Windows NT 3.5, Windows 2000, Windows 10 y la variante utilizada en las Xbox.

El código fuente de Windows XP es auténtico

A falta de una respuesta oficial que seguramente nunca llegue por motivos obvios, es seguro que el archivo filtrado (junto a un segundo paquete que se ha compartido a buen ritmo en las redes torrent y que (supuestamente) incluye código fuente de MS DOS, Windows 2000, CE, Embedded o NT) ha sido descargado por "malos" y "buenos" para intentar verificar su autenticidad.

ZDNet habló con varios ingenieros de software de Microsoft actuales y anteriores para confirmar la validez de los archivos filtrados. En ese momento, las fuentes dijeron que por la primera revisión el código parecía estar incompleto, pero que los componentes que analizaron parecían auténticos.

Un técnico TI que utiliza el pseudónimo NTDEV en redes sociales entrevistado por el medio, solo uno de los millones de usuarios que han descargado los archivos filtrados) confirma las primeras impresiones (. "Los informes eran ciertos. Parece que faltan algunos componentes, como winlogon.exe y muchos controladores, pero es auténtico y puede compilarse".

"Ciertos archivos, como el kernel y el Explorer, se pueden compilar fácilmente. He probado algunos programas de la fuente compilada de XP y parece que son idénticos a las versiones comerciales de Windows", asegura. "Los componentes que faltan provocan que el código XP filtrado aún no está en un estado totalmente utilizable, como para un reemplazo completo del sistema operativo, pero que el código es, sin embargo, auténtico". NTDEV cree que "la fuente se puede utilizar para compilar todos los SKU del sistema".

Y también el de Windows Server 2003

La filtración contenía código fuente de otros sistemas como Windows Server 2003 y según el técnico también es verídico. "El código filtrado de Windows Server 2003 es en realidad más completo que el de XP, pero también carece de algunos componentes como Winlogon", seguramente debido al hecho de que puede contener el código del proceso de activación del sistema.

NTDEV dice que, a diferencia de XP, ha conseguido "crear una instalación viable de Windows Server sustituyendo algunos archivos como el mencionado Winlogon y otros que faltan, la mayoría archivos de ayuda y controladores". El técnico ha publicado un par de vídeos en YouTube sobre este caso. Los vídeos han sido cancelados debido a una reclamación de derechos de autor realizada por Microsoft Corporation. No es buena señal, ya que indica que va por el buen camino.

El problema es que los "malos" estarán siguiendo caminos paralelos. Windows XP cumplirá el año próximo 20 años desde su lanzamiento y hace tiempo (en 2014) que terminó su ciclo de vida y se quedó sin soporte técnico. Sin embargo, todavía se usa, especialmente en empresas que tienen equipos con este sistema conectados a sus redes.

Además, la exposición de su código fuente es un potencial riesgo de seguridad ya que parte de ese código se utiliza en sistemas como Windows 7 e incluso en otros sistemas activos como Windows 10 para soportar componentes legado y otro funcionamiento interno de todos los sistemas de Microsoft.

# data[].attributes.attachment_link.title
El código fuente de Windows XP filtrado es auténtico

# data[].attributes.attachment_link.description
El código fuente de Windows XP filtrado la semana pasada es muy real. Y también el de Windows Server 2003. Faltan componentes y no están en un estado totalmente utilizable, pero el código es auténtico y puede compilarse, según los análisis del mismo.

# data[].attributes.body
El código fuente de Windows XP se filtró junto a otros archivos importantes de Microsoft durante la última semana de setiembre en foros como 4chan. Ahora, el tema ha escalada en gravedad ya que un desarrollador logró compilar dicho source code y confirmó que el resultado era un sistema operativo hecho y derecho.

# data[].attributes.attachment_link.title
Código fuente que filtraron de Windows XP es real y Microsoft intenta ocultar evidencias

# data[].attributes.attachment_link.description
Alguien logró compilar el código de Windows XP y Windows Server 2003 que se filtró hace unos días y el resultado fue un sistema operativo funcional.

# data[].attributes.body
https://www.xataka.com.mx/seguridad/codigo-fuente-windows-xp-se-ha-filtrado-esto-sabemos-como-sucedio-sus-posibles-implicaciones

# data[].attributes.attachment_link.title
Filtrado el Código Fuente de Windows Vista - Solingest

# data[].attributes.attachment_link.description
Desde algunos sitios nos llega esta noticia de que el código fuente de Windows Vista se ha filtrado, que sorpresa la nuestra...

# data[].attributes.attachment_link.readable_text
Jesús Cáceres

Categoría: Seguridad

Read Time: 2 mins

Visto: 2915

Los archivos filtrados fueron cargados inicialmente en el sitio web BetaArchive

Un gran archivo con los fundamentos más secretos de Windows 10 de Microsoft y los códigos fuente para el software privado se ha filtrado en Internet, lo que podría llevar a una desagradable amenaza de exploits en Windows 10, dice un periodista de The Register.

Los archivos filtrados, cargados en el sitio web BetaArchive, contienen más de 32 terabytes de datos, e incluyen muchas creaciones no públicas de Windows 10 y Windows Server 2016 creadas por ingenieros de Microsoft para fines de pruebas.

Curiosamente, las creaciones internas de Windows 10 incluyen símbolos de depuración privados definidos por los ingenieros usualmente para ayudar a otros desarrolladores internos a entender cómo funcionan algunos códigos específicos en el sistema operativo ya qué funciones llaman, informa The Register.

Los símbolos de depuración privados revelan algunos conocimientos profundos y sensibles sobre el sistema operativo que podrían ser utilizados por los escritores de exploit para encontrar vulnerabilidades.

Además, el volcado también contiene el Shared Source Kit de Microsoft, que incluye código fuente para los controladores de hardware de Windows 10, tales como:

* Plug-and-Play system
* USB Stacks
* Wi-Fi Stacks
* Storage Drivers
* ARM-specific OneCore kernel code

Según el sitio web de Microsoft, Shared Source Kit está disponible sólo para "clientes, empresas, gobiernos y socios calificados para fines de depuración y referencia".

Sin embargo, BetaArchive dice que la fuga tiene sólo 1,2 GB de tamaño y ahora ha sido eliminada de sus servidores.

"Lo hemos eliminado de nuestro FTP y los listados están pendientes de una revisión más en el caso de que nos perdimos algo en nuestro lanzamiento inicial. Actualmente no tenemos planes de restaurarlo hasta que se lleve a cabo una revisión completa de su contenido, y se considere que es aceptable bajo nuestras reglas", dijo BetaArchive.

Los archivos filtrados también contienen Microsoft Windows 10 Mobile Adaptation Kit, un kit de herramientas de software privado creado por Microsoft diseñado para ejecutar el sistema operativo Windows 10 en dispositivos móviles.

Hasta ahora no está claro quién está detrás de esta fuga masiva, pero podría ser de uno de los socios OEM de Microsoft.

Microsoft confirma la fuga

Microsoft ha confirmado que se ha filtrado en línea una parte del código fuente de Windows 10.

"Nuestra revisión confirma que estos archivos son en realidad una parte del código fuente de la Shared Source Initiative (Iniciativa de Fuente Compartida) y es utilizado por OEMs y socios", confirmó un portavoz de Microsoft a The Verge.

Estén atentos para más información.

# data[].attributes.attachment_link.title
Se filtra en línea código fuente de Windows 10 de Microsoft

# data[].attributes.attachment_link.description
Los archivos filtrados, cargados en el sitio web BetaArchive, contienen más de 32 terabytes de datos, e incluyen muchas creaciones no públicas de Windows 10 y Windows Server 2016 creadas por ingenieros de Microsoft para fines de pruebas.

# data[].attributes.body
https://github.com/tongzx/nt5src

# data[].attributes.attachment_link.title
GitHub - tongzx/nt5src: Source code of Windows XP (NT5). Leaks are not from me. I just extracted the archive and cabinet files.

# data[].attributes.attachment_link.description
Source code of Windows XP (NT5). Leaks are not from me. I just extracted the archive and cabinet files. - GitHub - tongzx/nt5src: Source code of Windows XP (NT5). Leaks are not from me. I just extracted the archive and cabinet files.

# data[].attributes.body
Supuestamente es el torrent que se filtro de XP, no lo probaria
https://www.limetorrents.lol/Microsoft-leaked-source-code-archive%202020-09-24-torrent-15247398.html

# data[].attributes.body
El código fuente de Windows XP filtrado es auténtico y puede compilarse (muycomputer.com)

# data[].attributes.attachment_link.readable_text
El código fuente de Windows XP filtrado la semana pasada es muy real. Y también el de Windows Server 2003. Faltan componentes y no están en un estado totalmente utilizable, pero el código es auténtico y puede compilarse, según los análisis del mismo.

La noticia del supuesto filtrado del código fuente de Windows XP y el de Windows Server 2003, fue portada en medio mundo ante las consecuencias que podía tener en materia de seguridad informática. Microsoft tardó varios días en responder y lo hizo con un críptico mensaje a " Estamos investigando el asunto".

Microsoft produce tanto código propietario como código abierto, pero el de sus sistemas operativos es de los primeros, se guarda celosamente y no está disponible públicamente. Aún así, no es la primera vez que parte del código fuente de Windows se filtra en línea y en el pasado vimos trozos de Windows NT 3.5, Windows 2000, Windows 10 y la variante utilizada en las Xbox.

El código fuente de Windows XP es auténtico

A falta de una respuesta oficial que seguramente nunca llegue por motivos obvios, es seguro que el archivo filtrado (junto a un segundo paquete que se ha compartido a buen ritmo en las redes torrent y que (supuestamente) incluye código fuente de MS DOS, Windows 2000, CE, Embedded o NT) ha sido descargado por "malos" y "buenos" para intentar verificar su autenticidad.

ZDNet habló con varios ingenieros de software de Microsoft actuales y anteriores para confirmar la validez de los archivos filtrados. En ese momento, las fuentes dijeron que por la primera revisión el código parecía estar incompleto, pero que los componentes que analizaron parecían auténticos.

Un técnico TI que utiliza el pseudónimo NTDEV en redes sociales entrevistado por el medio, solo uno de los millones de usuarios que han descargado los archivos filtrados) confirma las primeras impresiones (. "Los informes eran ciertos. Parece que faltan algunos componentes, como winlogon.exe y muchos controladores, pero es auténtico y puede compilarse".

"Ciertos archivos, como el kernel y el Explorer, se pueden compilar fácilmente. He probado algunos programas de la fuente compilada de XP y parece que son idénticos a las versiones comerciales de Windows", asegura. "Los componentes que faltan provocan que el código XP filtrado aún no está en un estado totalmente utilizable, como para un reemplazo completo del sistema operativo, pero que el código es, sin embargo, auténtico". NTDEV cree que "la fuente se puede utilizar para compilar todos los SKU del sistema".

Y también el de Windows Server 2003

La filtración contenía código fuente de otros sistemas como Windows Server 2003 y según el técnico también es verídico. "El código filtrado de Windows Server 2003 es en realidad más completo que el de XP, pero también carece de algunos componentes como Winlogon", seguramente debido al hecho de que puede contener el código del proceso de activación del sistema.

NTDEV dice que, a diferencia de XP, ha conseguido "crear una instalación viable de Windows Server sustituyendo algunos archivos como el mencionado Winlogon y otros que faltan, la mayoría archivos de ayuda y controladores". El técnico ha publicado un par de vídeos en YouTube sobre este caso. Los vídeos han sido cancelados debido a una reclamación de derechos de autor realizada por Microsoft Corporation. No es buena señal, ya que indica que va por el buen camino.

El problema es que los "malos" estarán siguiendo caminos paralelos. Windows XP cumplirá el año próximo 20 años desde su lanzamiento y hace tiempo (en 2014) que terminó su ciclo de vida y se quedó sin soporte técnico. Sin embargo, todavía se usa, especialmente en empresas que tienen equipos con este sistema conectados a sus redes.

Además, la exposición de su código fuente es un potencial riesgo de seguridad ya que parte de ese código se utiliza en sistemas como Windows 7 e incluso en otros sistemas activos como Windows 10 para soportar componentes legado y otro funcionamiento interno de todos los sistemas de Microsoft.

# data[].attributes.attachment_link.title
El código fuente de Windows XP filtrado es auténtico

# data[].attributes.attachment_link.description
El código fuente de Windows XP filtrado la semana pasada es muy real. Y también el de Windows Server 2003. Faltan componentes y no están en un estado totalmente utilizable, pero el código es auténtico y puede compilarse, según los análisis del mismo.

# data[].attributes.attachment_link.readable_text
The source code of Microsoft's Windows XP operating system was leaked online today. In addition to Windows XP, this also include source code of popular Windows Server 2003 OS. You can find the full list of contents that are part of this huge leak.

Windows XP

Windows Server 2003

MS DOS 3.30

MS DOS 6.0

Windows 2000

Windows CE 3

Windows CE 4

Windows CE 5

Windows Embedded 7

Windows Embedded CE

Windows NT 3.5

Windows NT 4

The whole 43GB content was posted as a torrent on the 4chan forum. We could not confirm whether the leaked source code is real or not. Microsoft has not yet responded on this huge source leak.

Even though Windows XP and Windows Server 2003 are very old operating systems, complete source code leak of them is a huge security concern. Because even modern OS like Windows 10 will have several source code files that are untouched from Windows XP days. Hackers can go through the old source code and find bugs to exploit them on Windows 10.

via: BleepingComputer

# data[].attributes.attachment_link.title
Microsoft's Windows XP and Windows Server 2003 source code leaked online - MSPoweruser

# data[].attributes.attachment_link.description
The source code of Microsoft's Windows XP and Windows Server 2003 operating systems were leaked online today.

# data[].attributes.body
https://ivanlopezjorda.wordpress.com/2015/10/05/planificacion-de-procesos-windows-y-linux/
Round Robin

# data[].attributes.body
https://1984.lsi.us.es/wiki-ssoo/index.php/Planificadores_de_sistemas_operativos_existentes

Windows se utiliza una política de planificación: Round Robin

# data[].attributes.attachment_link.readable_text
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

Posee un mapa de bits (140 bits), 1 bit para cada prioridad en la que implementan distintas estructuras SCHED_FIFO y SCHED_RR ambas para tiempo real y el resto SCHED_OTHER. Esta ultima estructura posee el número de procesos preparados y dos colas, una para los procesos pendientes y otra para los que ya han consumido su quantum. Cuando un proceso solo consume una parte de su quantum es insertado al final de la cola de pendientes con lo que le queda de su ventana de tiempo(es decir, si ha consumido el 25% la siguiente vez que sea asignado al procesador solo tendra el 75% del quantum), y si consume totalmente su tiempo de asignación al procesador este pasa a la cola de consumido hasta que este totalmente vacía la cola de pendientes. (Esto se hace para compensar los procesos más interactivos)

     Esquema de estructura de SCHED_OTHER:

        struct{
           int num_procesos_preparados
           cola pendientes
           cola consumido_quantum
        }

La planificación en el kernel de Mac OS X esta basada en cuatro listas de ejecución, cada una de ellas con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro en función de sus requerimientos, dependiendo de la política en concreto que se utilice en el sistema. En general, es posible manejar estas prioridades mediante los procedimientos definidos en el estándar de llamadas POSIX. Con lo que podemos decir, que se trata de un criterio de planificación en colas multinivel mezclado con prioridades. Algo parecido al planificador SCHED_OTHER de Linux.

Las cuatro listas de ejecución que maneja el planificador de Mac OS X, son:

El planificador utiliza un sistema de multi-cola ordenadas por prioridades. Son 32 niveles de prioridades (de 0 a 31) que se dividen de la siguiente forma:

- Niveles 16 a 31: Tiempo Real
- Niveles 1 a 15: Variable
- Nivel 0: Reservado para el sistema

El planificador utiliza Round Robin para recorrer las distintas colas. Tiene un quantum fijo que por defecto valdrá q=2 o q=12, dependiendo de si es un SO de servidor o de usuario. El quantum se puede cambiar entre estos dos valores a través del sistema.

Windows utiliza este sistema de planificación desde Windows NT. Si quieres saber más del sistema de planificación de Windows puedes leer el libro Windows Internals[1](PDF), donde se explica el funcionamiento y las caracteristicas de todo el SO.

4.5. La planificación de procesos de tiempo real

# data[].attributes.attachment_link.title
Planificadores de sistemas operativos existentes

# data[].attributes.attachment_link.description
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

# data[].attributes.body
https://www.ripublication.com/ijaer18/ijaerv13n18_14.pdf

# data[].attributes.body
https://www.compuhoy.com/que-algoritmo-de-programacion-se-usa-en-windows-10/

https://respuestasrapidas.com.mx/que-algoritmo-utiliza-windows-10/

*El algoritmo XTS-AES es el nuevo modo de cifrado de discos que utiliza por defecto Windows 10
* Windows NT / XP / Vista utiliza una cola de retroalimentación multinivel,una combinación de programación preventiva de prioridad fija, round-robin y algoritmos de primero en entrar, primero en salir.

# data[].attributes.attachment_link.readable_text
Programación de Windows: subprocesos programados de Windows utilizando un algoritmo de programación preventivo basado en prioridades. El planificador asegura que siempre se ejecutará el subproceso de mayor prioridad.

¿Qué algoritmo de programación se utiliza en Windows?

No existe un algoritmo de programación "mejor" universal, y muchos sistemas operativos utilizan algoritmos de programación extendidos o combinaciones de los anteriores. Por ejemplo, Windows NT / XP / Vista utiliza una cola de retroalimentación multinivel, una combinación de programación preventiva de prioridad fija, round-robin y algoritmos de primero en entrar, primero en salir.

¿Qué algoritmo de programación es mejor?

El cálculo de tres algoritmos muestra los diferentes tiempos de espera medios. El FCFS es mejor para un tiempo de ráfaga pequeño. El SJF es mejor si el proceso llega al procesador simultáneamente. El último algoritmo, Round Robin, es mejor para ajustar el tiempo de espera promedio deseado.

¿Cuáles son los tipos de algoritmos de programación?

Seis tipos de algoritmos de programación de procesos son: Primero llegado, primero servido (FCFS), 2) Programación de trabajo más corto, primero (SJF) 3) Tiempo restante más corto 4) Programación de prioridad 5) Programación por turnos 6) Programación de colas multinivel.

¿Qué es el algoritmo de programación en el sistema operativo?

Anuncios. Un programador de procesos programa diferentes procesos para ser asignados a la CPU en función de algoritmos de programación particulares. Hay seis algoritmos de programación de procesos populares que discutiremos en este capítulo: Programación por orden de llegada (FCFS).

¿Cuáles son los 5 tipos de programación?

Incluyen programación de tiempo especificado, programación de oleadas, programación de oleadas modificadas, reserva doble y reserva abierta. Muchos consultorios permiten que los pacientes establecidos soliciten citas o programen citas a través de Internet.

¿Qué es el algoritmo round robin?

Round-robin (RR) es uno de los algoritmos empleados por los programadores de procesos y redes en la informática. Como se usa generalmente el término, los segmentos de tiempo (también conocidos como cuantos de tiempo) se asignan a cada proceso en partes iguales y en orden circular, manejando todos los procesos sin prioridad (también conocido como ejecutivo cíclico).

¿Cuáles son las desventajas de la programación FCFS?

Desventajas: este método de programación no es preventivo, es decir, el proceso se ejecutará hasta que finalice. Debido a esta programación no preventiva, los procesos cortos que están al final de la cola tienen que esperar a que finalice el proceso largo al principio.

¿Cuáles son las características de un buen algoritmo de programación?

Varios criterios o características que ayudan a diseñar un buen algoritmo de programación son:

Utilización de la CPU: se debe diseñar un algoritmo de programación para que la CPU permanezca ocupada lo más posible. ...

Rendimiento: el rendimiento es la cantidad de trabajo completado en una unidad de tiempo.

¿Cómo se calcula la programación de FCFS?

Usando el algoritmo de programación FCFS, estos procesos se manejan de la siguiente manera. Paso 1) En el momento = 1, llega P3. P4 todavía se está ejecutando. Por tanto, P3 se mantiene en cola.
...
¿Cómo funciona FCFS? Cálculo del tiempo medio de espera.

¿Cuáles son los 3 tipos diferentes de colas de programación?

Colas de programación de procesos

Cola de trabajos: esta cola mantiene todos los procesos en el sistema.

Cola lista: esta cola mantiene un conjunto de todos los procesos que residen en la memoria principal, listos y esperando para ejecutarse. ...

Colas de dispositivos: los procesos que están bloqueados debido a la falta de disponibilidad de un dispositivo de E / S constituyen esta cola.

¿A qué te refieres con programación?

La programación es el proceso de organizar, controlar y optimizar el trabajo y las cargas de trabajo en un proceso de producción o proceso de fabricación. ... En la fabricación, el propósito de la programación es minimizar el tiempo y los costos de producción, indicando a una instalación de producción cuándo hacer, con qué personal y en qué equipo.

¿Cuántos tipos de horarios existen?

Los tres tipos de programación se conocen como programación de capacidad, programación de recursos y programación de servicio. De alguna manera, se superponen en lo que pueden hacer y, para algunas aplicaciones, más de uno funcionará. Obtendrá la mejor experiencia si sabe qué tipo de horario es apropiado para su situación.

¿Qué es el algoritmo FIFO?

El algoritmo de reemplazo de página más simple es un algoritmo FIFO. El algoritmo de reemplazo de página primero en entrar, primero en salir (FIFO) es un algoritmo de baja sobrecarga que requiere poca contabilidad por parte del sistema operativo. En palabras simples, en un error de página, se reemplaza el marco que ha estado más tiempo en la memoria.

¿Por qué necesitamos algoritmos de programación de CPU?

La programación de la CPU es un proceso que permite que un proceso use la CPU mientras la ejecución de otro proceso está en espera (en estado de espera) debido a la falta de disponibilidad de cualquier recurso como E / S, etc., haciendo así un uso completo de la CPU. El objetivo de la programación de la CPU es hacer que el sistema sea eficiente, rápido y justo.

# data[].attributes.attachment_link.title
¿Qué algoritmo de programación se usa en Windows 10? - CompuHoy.com

# data[].attributes.attachment_link.description
Si está buscando ¿Qué algoritmo de programación se usa en Windows 10? haga clic aquí. En Compuhoy.com encontrarás todas las respuestas sobre sistemas

# data[].attributes.body
https://www.theverge.com/2017/6/24/15867350/microsoft-windows-10-source-code-leak

# data[].attributes.attachment_link.readable_text
A portion of Microsoft's Windows 10 source code has leaked online this week. Files related to Microsoft's USB, storage, and Wi-Fi drivers in Windows 10 were posted to Beta Archive this week. Beta Archive is an enthusiast site that tracks Windows releases, and asks members to donate money or contribute something Windows-related if they access a free private FTP full of archived Windows builds. The leaked code was published to Beta Archive's FTP, and is part of Microsoft's Shared Source Kit.

"Our review confirms that these files are actually a portion of the source code from the Shared Source Initiative and is used by OEMs and partners," reveals a Microsoft spokesperson in an email to The Verge. While The Register claims 32TB of data, including unreleased Windows builds, has been leaked, The Verge understands most of the collection has been available for months, or even years. The Register also claims the source code leak is bigger than the Windows 2000 leak from 2004, but The Verge understands this is inaccurate and that the Windows 10 source code leak is relatively minor.

An embarrassing leak for Microsoft

The leak will be embarrassing for Microsoft, but the source code itself is already shared with partners, enterprises, governments, and other customers who choose to license it through the Shared Source initiative. Microsoft's Windows 10 Mobile Adaption Kit was also included in the leak, alongside some Windows 10 Creators Update builds, and some ARM-based versions of Windows 10.

Beta Archive owner Andrew Whyman has revealed the source code was just 1.2GB in size and has been removed. In an email to The Verge, Whyman says Microsoft has not forced the site to remove the code and that "we have removed the file under our own decision."

The source code leak comes after two Microsoft-related arrests

The source code leak comes just a day after two men were arrested in the UK as part of an investigation into unauthorized access to Microsoft's network. Detectives executed warrants to arrest a 22-year-old man from Lincolnshire, and a 25-year-old man from Bracknell. The Verge understands both men have been involved in collecting confidential Windows 10 builds, and that at least one is a donator to the Beta Archive site. A spokesperson for Thames Valley police refused to provide more information on the arrests to The Verge, and would not confirm the two identities of the individuals.

It's not clear if the arrests are directly linked to the source code leak, but Microsoft is evidently concerned about some potential intrusions into its networks by Windows enthusiasts. The alleged offences took place between January and March, and a large dump of confidential Windows 10 builds was leaked to Beta Archive on March 24th. An administrator of Beta Archive, named only as "mrpijey," revealed "with the help of members (whose names shall never be mentioned) I've downloaded a whole lot of Windows Insider builds of Windows 10 directly from Microsoft" at the time of the leak. Ars Technica also reports that Microsoft's build systems may have been hacked in March.

Microsoft has avoided, most of the time, lots of Windows 10 build leaks thanks to its Insider program that lets testers access early copies of the operating system. In the past, the software giant has aggressively pursued Windows leakers, and the company even scanned a bloggers Hotmail account to track down a Windows 8 leak once.

The Verge has reached out to Microsoft to comment further on the arrests, and we'll update you accordingly.

Update, 6:25AM ET: Article updated to clarify Beta Archive description.

# data[].attributes.attachment_link.title
Microsoft confirms some Windows 10 source code has leaked

# data[].attributes.attachment_link.description
The Verge is about technology and how it makes us feel. Founded in 2011, we offer our audience everything from breaking news to reviews to award-winning features and investigations, on our site, in video, and in podcasts.

# data[].attributes.body
https://1984.lsi.us.es/wiki-ssoo/index.php/Planificadores_de_sistemas_operativos_existentes

# data[].attributes.attachment_link.readable_text
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

Posee un mapa de bits (140 bits), 1 bit para cada prioridad en la que implementan distintas estructuras SCHED_FIFO y SCHED_RR ambas para tiempo real y el resto SCHED_OTHER. Esta ultima estructura posee el número de procesos preparados y dos colas, una para los procesos pendientes y otra para los que ya han consumido su quantum. Cuando un proceso solo consume una parte de su quantum es insertado al final de la cola de pendientes con lo que le queda de su ventana de tiempo(es decir, si ha consumido el 25% la siguiente vez que sea asignado al procesador solo tendra el 75% del quantum), y si consume totalmente su tiempo de asignación al procesador este pasa a la cola de consumido hasta que este totalmente vacía la cola de pendientes. (Esto se hace para compensar los procesos más interactivos)

     Esquema de estructura de SCHED_OTHER:

        struct{
           int num_procesos_preparados
           cola pendientes
           cola consumido_quantum
        }

La planificación en el kernel de Mac OS X esta basada en cuatro listas de ejecución, cada una de ellas con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro en función de sus requerimientos, dependiendo de la política en concreto que se utilice en el sistema. En general, es posible manejar estas prioridades mediante los procedimientos definidos en el estándar de llamadas POSIX. Con lo que podemos decir, que se trata de un criterio de planificación en colas multinivel mezclado con prioridades. Algo parecido al planificador SCHED_OTHER de Linux.

Las cuatro listas de ejecución que maneja el planificador de Mac OS X, son:

El planificador utiliza un sistema de multi-cola ordenadas por prioridades. Son 32 niveles de prioridades (de 0 a 31) que se dividen de la siguiente forma:

- Niveles 16 a 31: Tiempo Real
- Niveles 1 a 15: Variable
- Nivel 0: Reservado para el sistema

El planificador utiliza Round Robin para recorrer las distintas colas. Tiene un quantum fijo que por defecto valdrá q=2 o q=12, dependiendo de si es un SO de servidor o de usuario. El quantum se puede cambiar entre estos dos valores a través del sistema.

Windows utiliza este sistema de planificación desde Windows NT. Si quieres saber más del sistema de planificación de Windows puedes leer el libro Windows Internals[1](PDF), donde se explica el funcionamiento y las caracteristicas de todo el SO.

4.5. La planificación de procesos de tiempo real

# data[].attributes.attachment_link.title
Planificadores de sistemas operativos existentes

# data[].attributes.attachment_link.description
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

# data[].attributes.body
https://www.compuhoy.com/que-algoritmo-de-programacion-se-usa-en-windows-10/
Windows NT / XP / Vista utiliza una cola de retroalimentación multinivel, una combinación de programación preventiva de prioridad fija, round-robin y algoritmos de primero en entrar, primero en salir.

# data[].attributes.attachment_link.readable_text
Programación de Windows: subprocesos programados de Windows utilizando un algoritmo de programación preventivo basado en prioridades. El planificador asegura que siempre se ejecutará el subproceso de mayor prioridad.

¿Qué algoritmo de programación se utiliza en Windows?

No existe un algoritmo de programación "mejor" universal, y muchos sistemas operativos utilizan algoritmos de programación extendidos o combinaciones de los anteriores. Por ejemplo, Windows NT / XP / Vista utiliza una cola de retroalimentación multinivel, una combinación de programación preventiva de prioridad fija, round-robin y algoritmos de primero en entrar, primero en salir.

¿Qué algoritmo de programación es mejor?

El cálculo de tres algoritmos muestra los diferentes tiempos de espera medios. El FCFS es mejor para un tiempo de ráfaga pequeño. El SJF es mejor si el proceso llega al procesador simultáneamente. El último algoritmo, Round Robin, es mejor para ajustar el tiempo de espera promedio deseado.

¿Cuáles son los tipos de algoritmos de programación?

Seis tipos de algoritmos de programación de procesos son: Primero llegado, primero servido (FCFS), 2) Programación de trabajo más corto, primero (SJF) 3) Tiempo restante más corto 4) Programación de prioridad 5) Programación por turnos 6) Programación de colas multinivel.

¿Qué es el algoritmo de programación en el sistema operativo?

Anuncios. Un programador de procesos programa diferentes procesos para ser asignados a la CPU en función de algoritmos de programación particulares. Hay seis algoritmos de programación de procesos populares que discutiremos en este capítulo: Programación por orden de llegada (FCFS).

¿Cuáles son los 5 tipos de programación?

Incluyen programación de tiempo especificado, programación de oleadas, programación de oleadas modificadas, reserva doble y reserva abierta. Muchos consultorios permiten que los pacientes establecidos soliciten citas o programen citas a través de Internet.

¿Qué es el algoritmo round robin?

Round-robin (RR) es uno de los algoritmos empleados por los programadores de procesos y redes en la informática. Como se usa generalmente el término, los segmentos de tiempo (también conocidos como cuantos de tiempo) se asignan a cada proceso en partes iguales y en orden circular, manejando todos los procesos sin prioridad (también conocido como ejecutivo cíclico).

¿Cuáles son las desventajas de la programación FCFS?

Desventajas: este método de programación no es preventivo, es decir, el proceso se ejecutará hasta que finalice. Debido a esta programación no preventiva, los procesos cortos que están al final de la cola tienen que esperar a que finalice el proceso largo al principio.

¿Cuáles son las características de un buen algoritmo de programación?

Varios criterios o características que ayudan a diseñar un buen algoritmo de programación son:

Utilización de la CPU: se debe diseñar un algoritmo de programación para que la CPU permanezca ocupada lo más posible. ...

Rendimiento: el rendimiento es la cantidad de trabajo completado en una unidad de tiempo.

¿Cómo se calcula la programación de FCFS?

Usando el algoritmo de programación FCFS, estos procesos se manejan de la siguiente manera. Paso 1) En el momento = 1, llega P3. P4 todavía se está ejecutando. Por tanto, P3 se mantiene en cola.
...
¿Cómo funciona FCFS? Cálculo del tiempo medio de espera.

¿Cuáles son los 3 tipos diferentes de colas de programación?

Colas de programación de procesos

Cola de trabajos: esta cola mantiene todos los procesos en el sistema.

Cola lista: esta cola mantiene un conjunto de todos los procesos que residen en la memoria principal, listos y esperando para ejecutarse. ...

Colas de dispositivos: los procesos que están bloqueados debido a la falta de disponibilidad de un dispositivo de E / S constituyen esta cola.

¿A qué te refieres con programación?

La programación es el proceso de organizar, controlar y optimizar el trabajo y las cargas de trabajo en un proceso de producción o proceso de fabricación. ... En la fabricación, el propósito de la programación es minimizar el tiempo y los costos de producción, indicando a una instalación de producción cuándo hacer, con qué personal y en qué equipo.

¿Cuántos tipos de horarios existen?

Los tres tipos de programación se conocen como programación de capacidad, programación de recursos y programación de servicio. De alguna manera, se superponen en lo que pueden hacer y, para algunas aplicaciones, más de uno funcionará. Obtendrá la mejor experiencia si sabe qué tipo de horario es apropiado para su situación.

¿Qué es el algoritmo FIFO?

El algoritmo de reemplazo de página más simple es un algoritmo FIFO. El algoritmo de reemplazo de página primero en entrar, primero en salir (FIFO) es un algoritmo de baja sobrecarga que requiere poca contabilidad por parte del sistema operativo. En palabras simples, en un error de página, se reemplaza el marco que ha estado más tiempo en la memoria.

¿Por qué necesitamos algoritmos de programación de CPU?

La programación de la CPU es un proceso que permite que un proceso use la CPU mientras la ejecución de otro proceso está en espera (en estado de espera) debido a la falta de disponibilidad de cualquier recurso como E / S, etc., haciendo así un uso completo de la CPU. El objetivo de la programación de la CPU es hacer que el sistema sea eficiente, rápido y justo.

# data[].attributes.attachment_link.title
¿Qué algoritmo de programación se usa en Windows 10? - CompuHoy.com

# data[].attributes.attachment_link.description
Si está buscando ¿Qué algoritmo de programación se usa en Windows 10? haga clic aquí. En Compuhoy.com encontrarás todas las respuestas sobre sistemas

# data[].attributes.body
https://repo.zenk-security.com/Linux%20et%20systemes%20d.exploitations/Windows%20Internals%20Part%201_6th%20Edition.pdf
Libro de Windows donde detalla su arquitectura y núcleos internos. Capítulo 5 - Pag. +408

# data[].attributes.attachment_link.readable_text
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

Posee un mapa de bits (140 bits), 1 bit para cada prioridad en la que implementan distintas estructuras SCHED_FIFO y SCHED_RR ambas para tiempo real y el resto SCHED_OTHER. Esta ultima estructura posee el número de procesos preparados y dos colas, una para los procesos pendientes y otra para los que ya han consumido su quantum. Cuando un proceso solo consume una parte de su quantum es insertado al final de la cola de pendientes con lo que le queda de su ventana de tiempo(es decir, si ha consumido el 25% la siguiente vez que sea asignado al procesador solo tendra el 75% del quantum), y si consume totalmente su tiempo de asignación al procesador este pasa a la cola de consumido hasta que este totalmente vacía la cola de pendientes. (Esto se hace para compensar los procesos más interactivos)

     Esquema de estructura de SCHED_OTHER:

        struct{
           int num_procesos_preparados
           cola pendientes
           cola consumido_quantum
        }

La planificación en el kernel de Mac OS X esta basada en cuatro listas de ejecución, cada una de ellas con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro en función de sus requerimientos, dependiendo de la política en concreto que se utilice en el sistema. En general, es posible manejar estas prioridades mediante los procedimientos definidos en el estándar de llamadas POSIX. Con lo que podemos decir, que se trata de un criterio de planificación en colas multinivel mezclado con prioridades. Algo parecido al planificador SCHED_OTHER de Linux.

Las cuatro listas de ejecución que maneja el planificador de Mac OS X, son:

El planificador utiliza un sistema de multi-cola ordenadas por prioridades. Son 32 niveles de prioridades (de 0 a 31) que se dividen de la siguiente forma:

- Niveles 16 a 31: Tiempo Real
- Niveles 1 a 15: Variable
- Nivel 0: Reservado para el sistema

El planificador utiliza Round Robin para recorrer las distintas colas. Tiene un quantum fijo que por defecto valdrá q=2 o q=12, dependiendo de si es un SO de servidor o de usuario. El quantum se puede cambiar entre estos dos valores a través del sistema.

Windows utiliza este sistema de planificación desde Windows NT. Si quieres saber más del sistema de planificación de Windows puedes leer el libro Windows Internals[1](PDF), donde se explica el funcionamiento y las caracteristicas de todo el SO.

4.5. La planificación de procesos de tiempo real

# data[].attributes.attachment_link.title
Planificadores de sistemas operativos existentes

# data[].attributes.attachment_link.description
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

# data[].attributes.body
https://www.compuhoy.com/que-algoritmo-de-programacion-se-usa-en-windows-10/

# data[].attributes.attachment_link.readable_text
Programación de Windows: subprocesos programados de Windows utilizando un algoritmo de programación preventivo basado en prioridades. El planificador asegura que siempre se ejecutará el subproceso de mayor prioridad.

¿Qué algoritmo de programación se utiliza en Windows?

No existe un algoritmo de programación "mejor" universal, y muchos sistemas operativos utilizan algoritmos de programación extendidos o combinaciones de los anteriores. Por ejemplo, Windows NT / XP / Vista utiliza una cola de retroalimentación multinivel, una combinación de programación preventiva de prioridad fija, round-robin y algoritmos de primero en entrar, primero en salir.

¿Qué algoritmo de programación es mejor?

El cálculo de tres algoritmos muestra los diferentes tiempos de espera medios. El FCFS es mejor para un tiempo de ráfaga pequeño. El SJF es mejor si el proceso llega al procesador simultáneamente. El último algoritmo, Round Robin, es mejor para ajustar el tiempo de espera promedio deseado.

¿Cuáles son los tipos de algoritmos de programación?

Seis tipos de algoritmos de programación de procesos son: Primero llegado, primero servido (FCFS), 2) Programación de trabajo más corto, primero (SJF) 3) Tiempo restante más corto 4) Programación de prioridad 5) Programación por turnos 6) Programación de colas multinivel.

¿Qué es el algoritmo de programación en el sistema operativo?

Anuncios. Un programador de procesos programa diferentes procesos para ser asignados a la CPU en función de algoritmos de programación particulares. Hay seis algoritmos de programación de procesos populares que discutiremos en este capítulo: Programación por orden de llegada (FCFS).

¿Cuáles son los 5 tipos de programación?

Incluyen programación de tiempo especificado, programación de oleadas, programación de oleadas modificadas, reserva doble y reserva abierta. Muchos consultorios permiten que los pacientes establecidos soliciten citas o programen citas a través de Internet.

¿Qué es el algoritmo round robin?

Round-robin (RR) es uno de los algoritmos empleados por los programadores de procesos y redes en la informática. Como se usa generalmente el término, los segmentos de tiempo (también conocidos como cuantos de tiempo) se asignan a cada proceso en partes iguales y en orden circular, manejando todos los procesos sin prioridad (también conocido como ejecutivo cíclico).

¿Cuáles son las desventajas de la programación FCFS?

Desventajas: este método de programación no es preventivo, es decir, el proceso se ejecutará hasta que finalice. Debido a esta programación no preventiva, los procesos cortos que están al final de la cola tienen que esperar a que finalice el proceso largo al principio.

¿Cuáles son las características de un buen algoritmo de programación?

Varios criterios o características que ayudan a diseñar un buen algoritmo de programación son:

Utilización de la CPU: se debe diseñar un algoritmo de programación para que la CPU permanezca ocupada lo más posible. ...

Rendimiento: el rendimiento es la cantidad de trabajo completado en una unidad de tiempo.

¿Cómo se calcula la programación de FCFS?

Usando el algoritmo de programación FCFS, estos procesos se manejan de la siguiente manera. Paso 1) En el momento = 1, llega P3. P4 todavía se está ejecutando. Por tanto, P3 se mantiene en cola.
...
¿Cómo funciona FCFS? Cálculo del tiempo medio de espera.

¿Cuáles son los 3 tipos diferentes de colas de programación?

Colas de programación de procesos

Cola de trabajos: esta cola mantiene todos los procesos en el sistema.

Cola lista: esta cola mantiene un conjunto de todos los procesos que residen en la memoria principal, listos y esperando para ejecutarse. ...

Colas de dispositivos: los procesos que están bloqueados debido a la falta de disponibilidad de un dispositivo de E / S constituyen esta cola.

¿A qué te refieres con programación?

La programación es el proceso de organizar, controlar y optimizar el trabajo y las cargas de trabajo en un proceso de producción o proceso de fabricación. ... En la fabricación, el propósito de la programación es minimizar el tiempo y los costos de producción, indicando a una instalación de producción cuándo hacer, con qué personal y en qué equipo.

¿Cuántos tipos de horarios existen?

Los tres tipos de programación se conocen como programación de capacidad, programación de recursos y programación de servicio. De alguna manera, se superponen en lo que pueden hacer y, para algunas aplicaciones, más de uno funcionará. Obtendrá la mejor experiencia si sabe qué tipo de horario es apropiado para su situación.

¿Qué es el algoritmo FIFO?

El algoritmo de reemplazo de página más simple es un algoritmo FIFO. El algoritmo de reemplazo de página primero en entrar, primero en salir (FIFO) es un algoritmo de baja sobrecarga que requiere poca contabilidad por parte del sistema operativo. En palabras simples, en un error de página, se reemplaza el marco que ha estado más tiempo en la memoria.

¿Por qué necesitamos algoritmos de programación de CPU?

La programación de la CPU es un proceso que permite que un proceso use la CPU mientras la ejecución de otro proceso está en espera (en estado de espera) debido a la falta de disponibilidad de cualquier recurso como E / S, etc., haciendo así un uso completo de la CPU. El objetivo de la programación de la CPU es hacer que el sistema sea eficiente, rápido y justo.

# data[].attributes.attachment_link.title
¿Qué algoritmo de programación se usa en Windows 10? - CompuHoy.com

# data[].attributes.attachment_link.description
Si está buscando ¿Qué algoritmo de programación se usa en Windows 10? haga clic aquí. En Compuhoy.com encontrarás todas las respuestas sobre sistemas

# data[].attributes.body
https://www.microsoftpressstore.com/articles/article.aspx?p=2233328&seqNum=7#:~:text=Windows%20implements%20a%20priority%2Ddriven,a%20phenomenon%20called%20processor%20affinity.

# data[].attributes.attachment_link.readable_text
Thread Scheduling

This section describes the Windows scheduling policies and algorithms. The first subsection provides a condensed description of how scheduling works on Windows and a definition of key terms. Then Windows priority levels are described from both the Windows API and the Windows kernel points of view. After a review of the relevant Windows functions and Windows utilities and tools that relate to scheduling, the detailed data structures and algorithms that make up the Windows scheduling system are presented, with uniprocessor systems examined first and then multiprocessor systems.

Overview of Windows Scheduling

Windows implements a priority-driven, preemptive scheduling system-the highest-priority runnable ( ready) thread always runs, with the caveat that the thread chosen to run might be limited by the processors on which the thread is allowed to run, a phenomenon called processor affinity. By default, threads can run on any available processor, but you can alter processor affinity by using one of the Windows scheduling functions listed in Table 5-15 (shown later in the chapter) or by setting an affinity mask in the image header.

When a thread is selected to run, it runs for an amount of time called a quantum. A quantum is the length of time a thread is allowed to run before another thread at the same priority level (or higher, which can occur on a multiprocessor system) is given a turn to run. Quantum values can vary from system to system and process to process for any of three reasons: system configuration settings (long or short quantums), foreground/background status of the process, or use of the job object to alter the quantum. (Quantums are described in more detail in the Quantum section later in the chapter.) A thread might not get to complete its quantum, however. Because Windows implements a preemptive scheduler, if another thread with a higher priority becomes ready to run, the currently running thread might be preempted before finishing its time slice. In fact, a thread can be selected to run next and be preempted before even beginning its quantum!

The Windows scheduling code is implemented in the kernel. There's no single "scheduler" module or routine, however-the code is spread throughout the kernel in which scheduling-related events occur. The routines that perform these duties are collectively called the kernel's dispatcher. The following events might require thread dispatching:

A thread becomes ready to execute-for example, a thread has been newly created or has just been released from the wait state.

A thread leaves the running state because its time quantum ends, it terminates, it yields execution, or it enters a wait state.

A thread's priority changes, either because of a system service call or because Windows itself changes the priority value.

A thread's processor affinity changes so that it will no longer run on the processor on which it was running.

At each of these junctions, Windows must determine which thread should run next. When Windows selects a new thread to run, it performs a context switch to it. A context switch is the procedure of saving the volatile machine state associated with a running thread, loading another thread's volatile state, and starting the new thread's execution.

As already noted, Windows schedules at the thread granularity. This approach makes sense when you consider that processes don't run but only provide resources and a context in which their threads run. Because scheduling decisions are made strictly on a thread basis, no consideration is given to what process the thread belongs to. For example, if process A has 10 runnable threads, process B has 2 runnable threads, and all 12 threads are at the same priority, each thread would theoretically receive one-twelfth of the CPU time-Windows wouldn't give 50 percent of the CPU to process A and 50 percent to process B.

Priority Levels

To understand the thread-scheduling algorithms, you must first understand the priority levels that Windows uses. As illustrated in Figure 5-12, internally Windows uses 32 priority levels, ranging from 0 through 31. These values divide up as follows:

Sixteen real-time levels (16 through 31)

Fifteen variable levels (1 through 15)

One system level (0), reserved for the zero page thread

Figure 5-12. Thread priority levels

Thread priority levels are assigned from two different perspectives: those of the Windows API and those of the Windows kernel. The Windows API first organizes processes by the priority class to which they are assigned at creation (Real-time, High, Above Normal, Normal, Below Normal, and Idle) and then by the relative priority of the individual threads within those processes (Time-critical, Highest, Above-normal, Normal, Below-normal, Lowest, and Idle).

In the Windows API, each thread has a base priority that is a function of its process priority class and its relative thread priority. The mapping from Windows priority to internal Windows numeric priority is shown in Figure 5-13.

Figure 5-13. Mapping of Windows kernel priorities to the Windows API

Whereas a process has only a single base priority value, each thread has two priority values: current and base. Scheduling decisions are made based on the current priority. As explained in the following section on priority boosting, the system under certain circumstances increases the priority of threads in the dynamic range (1 through 15) for brief periods. Windows never adjusts the priority of threads in the real-time range (16 through 31), so they always have the same base and current priority.

A thread's initial base priority is inherited from the process base priority. A process, by default, inherits its base priority from the process that created it. This behavior can be overridden on the CreateProcess function or by using the command-line start command. A process priority can also be changed after being created by using the SetPriorityClass function or various tools that expose that function, such as Task Manager and Process Explorer (by right-clicking on the process and choosing a new priority class). For example, you can lower the priority of a CPU-intensive process so that it does not interfere with normal system activities. Changing the priority of a process changes the thread priorities up or down, but their relative settings remain the same. It usually doesn't make sense, however, to change individual thread priorities within a process, because unless you wrote the program or have the source code, you don't really know what the individual threads are doing, and changing their relative importance might cause the program not to behave in the intended fashion.

Normally, the process base priority (and therefore the starting thread base priority) will default to the value at the middle of each process priority range (24, 13, 10, 8, 6, or 4). However, some Windows system processes (such as the Session Manager, service controller, and local security authentication server) have a base process priority slightly higher than the default for the Normal class (8). This higher default value ensures that the threads in these processes will all start at a higher priority than the default value of 8. These system processes use an internal system call ( NtSetInformationProcess) to set their process base priority to a numeric value other than the normal default starting base priority.

Windows Scheduling APIs

The Windows API functions that relate to thread scheduling are listed in Table 5-15. (For more information, see the Windows API reference documentation.)

Table 5-15. Scheduling-Related APIs and Their Functions

Relevant Tools

You can change (and view) the base process priority with Task Manager and Process Explorer. You can kill individual threads in a process with Process Explorer (which should be done, of course, with extreme care).

You can view individual thread priorities with the Reliability and Performance Monitor, Process Explorer, or WinDbg. While it might be useful to increase or lower the priority of a process, it typically does not make sense to adjust individual thread priorities within a process because only a person who thoroughly understands the program (in other words, typically only the developer himself) would understand the relative importance of the threads within the process.

The only way to specify a starting priority class for a process is with the start command in the Windows command prompt. If you want to have a program start every time with a specific priority, you can define a shortcut to use the start command by beginning the command with cmd /c. This runs the command prompt, executes the command on the command line, and terminates the command prompt. For example, to run Notepad in the low-process priority, the shortcut would be cmd /c start /low Notepad.exe.

Real-Time Priorities

You can raise or lower thread priorities within the dynamic range in any application; however, you must have the increase scheduling priority privilege to enter the real-time range. Be aware that many important Windows kernel-mode system threads run in the real-time priority range, so if threads spend excessive time running in this range, they might block critical system functions (such as in the memory manager, cache manager, or other device drivers).

Thread States

Before you can comprehend the thread-scheduling algorithms, you need to understand the various execution states that a thread can be in. Figure 5-14 illustrates the state transitions for threads. (The numeric values shown represent the value of the thread state performance counter.) More details on what happens at each transition are included later in this section.

The thread states are as follows:

Ready A thread in the ready state is waiting to execute. When looking for a thread to execute, the dispatcher considers only the pool of threads in the ready state.

Deferred ready This state is used for threads that have been selected to run on a specific processor but have not yet been scheduled. This state exists so that the kernel can minimize the amount of time the systemwide lock on the scheduling database is held.

Standby A thread in the standby state has been selected to run next on a particular processor. When the correct conditions exist, the dispatcher performs a context switch to this thread. Only one thread can be in the standby state for each processor on the system. Note that a thread can be preempted out of the standby state before it ever executes (if, for example, a higher priority thread becomes runnable before the standby thread begins execution).

Running Once the dispatcher performs a context switch to a thread, the thread enters the running state and executes. The thread's execution continues until its quantum ends (and another thread at the same priority is ready to run), it is preempted by a higher priority thread, it terminates, it yields execution, or it voluntarily enters the wait state.

Waiting A thread can enter the wait state in several ways: a thread can voluntarily wait for an object to synchronize its execution, the operating system can wait on the thread's behalf (such as to resolve a paging I/O), or an environment subsystem can direct the thread to suspend itself. When the thread's wait ends, depending on the priority, the thread either begins running immediately or is moved back to the ready state.

Gate Waiting When a thread does a wait on a gate dispatcher object (see Chapter 3 for more information on gates), it enters the gate waiting state instead of the waiting state. This difference is important when breaking a thread's wait as the result of an APC. Because gates don't use the dispatcher lock, but a per-object lock, the kernel needs to perform some unique locking operations when breaking the wait of a thread waiting on a gate and a way to differentiate this from a normal wait.

Transition A thread enters the transition state if it is ready for execution but its kernel stack is paged out of memory. Once its kernel stack is brought back into memory, the thread enters the ready state.

Terminated When a thread finishes executing, it enters the terminated state. Once the thread is terminated, the executive thread block (the data structure in nonpaged pool that describes the thread) might or might not be deallocated. (The object manager sets policy regarding when to delete the object.)

Initialized This state is used internally while a thread is being created.

Figure 5-14. Thread states and transitions

Dispatcher Database

To make thread-scheduling decisions, the kernel maintains a set of data structures known collectively as the dispatcher database, illustrated in Figure 5-15. The dispatcher database keeps track of which threads are waiting to execute and which processors are executing which threads.

To improve scalability, including thread-dispatching concurrency, Windows multiprocessor systems have per-processor dispatcher ready queues, as illustrated in Figure 5-15. In this way each CPU can check its own ready queues for the next thread to run without having to lock the systemwide ready queues. (Versions of Windows before Windows Server 2003 used a global database).

The per-processor ready queues, as well as the per-processor ready summary, are part of the processor control block (PRCB) structure. (To see the fields in the PRCB, type dt nt!_prcb in the kernel debugger.) The names of each component that we will talk about (in italics) are field members of the PRCB structure.

The dispatcher ready queues (DispatcherReadyListHead) contain the threads that are in the ready state, waiting to be scheduled for execution. There is one queue for each of the 32 priority levels. To speed up the selection of which thread to run or preempt, Windows maintains a 32-bit bit mask called the ready summary ( ReadySummary). Each bit set indicates one or more threads in the ready queue for that priority level. (Bit 0 represents priority 0, and so on.)

Instead of scanning each ready list to see whether it is empty or not (which would make scheduling decisions dependent on the number of different priority threads), a single bit scan is performed as a native processor command to find the highest bit set. Regardless of the number of threads in the ready queue, this operation takes a constant amount of time, which is why you may sometimes see the Windows scheduling algorithm referred to as an O(1), or constant time, algorithm.

Figure 5-15. Windows multiprocessor dispatcher database

Table 5-16 lists the KPRCB fields involved in thread scheduling.

Table 5-16. Thread-Scheduling KPRCB Fields

The dispatcher database is synchronized by raising IRQL to SYNCH_LEVEL (which is defined as level 2). (For an explanation of interrupt priority levels, see the Trap Dispatching section in Chapter 3.) Raising IRQL in this way prevents other threads from interrupting thread dispatching on the processor because threads normally run at IRQL 0 or 1. However, on a multiprocessor system, more is required than just raising IRQL because other processors can simultaneously raise to the same IRQL and attempt to operate on the dispatcher database. How Windows synchronizes access to the dispatcher database is explained in the Multiprocessor Systems section later in the chapter.

Quantum

As mentioned earlier in the chapter, a quantum is the amount of time a thread gets to run before Windows checks to see whether another thread at the same priority is waiting to run. If a thread completes its quantum and there are no other threads at its priority, Windows permits the thread to run for another quantum.

On Windows Vista, threads run by default for 2 clock intervals; on Windows Server systems, by default, a thread runs for 12 clock intervals. (We'll explain how you can change these values later.) The rationale for the longer default value on server systems is to minimize context switching. By having a longer quantum, server applications that wake up as the result of a client request have a better chance of completing the request and going back into a wait state before their quantum ends.

The length of the clock interval varies according to the hardware platform. The frequency of the clock interrupts is up to the HAL, not the kernel. For example, the clock interval for most x86 uniprocessors is about 10 milliseconds, and for most x86 and x64 multiprocessors it is about 15 milliseconds. This clock interval is stored in the kernel variable KeMaximumIncrement as hundreds of nanoseconds.

Because of changes in thread run-time accounting in Windows Vista (briefly mentioned earlier in the thread activity experiment), although threads still run in units of clock intervals, the system does not use the count of clock ticks as the deciding factor for how long a thread has run and whether its quantum has expired. Instead, when the system starts up, a calculation is made whose result is the number of clock cycles that each quantum is equivalent to (this value is stored in the kernel variable KiCyclesPerClockQuantum). This calculation is made by multiplying the processor speed in Hz (CPU clock cycles per second) with the number of seconds it takes for one clock tick to fire (based on the KeMaximumIncrement value described above).

The end result of this new accounting method is that, as of Windows Vista, threads do not actually run for a quantum number based on clock ticks; they instead run for a quantum target, which represents an estimate of what the number of CPU clock cycles the thread has consumed should be when its turn would be given up. This target should be equal to an equivalent number of clock interval timer ticks because, as we've just seen, the calculation of clock cycles per quantum is based on the clock interval timer frequency, which you can check using the following experiment. On the other hand, because interrupt cycles are not charged to the thread, the actual clock time may be longer.

Quantum Accounting

Each process has a quantum reset value in the kernel process block. This value is used when creating new threads inside the process and is duplicated in the kernel thread block, which is then used when giving a thread a new quantum target. The quantum reset value is stored in terms of actual quantum units (we'll discuss what these mean soon), which are then multiplied by the number of clock cycles per quantum, resulting in the quantum target.

As a thread runs, CPU clock cycles are charged at different events (context switches, interrupts, and certain scheduling decisions). If at a clock interval timer interrupt, the number of CPU clock cycles charged has reached (or passed) the quantum target, then quantum end processing is triggered. If there is another thread at the same priority waiting to run, a context switch occurs to the next thread in the ready queue.

Internally, a quantum unit is represented as one third of a clock tick (so one clock tick equals three quantums). This means that on Windows Vista systems, threads, by default, have a quantum reset value of 6 (2 * 3), and that Windows Server 2008 systems have a quantum reset value of 36 (12 * 3). For this reason, the KiCyclesPerClockQuantum value is divided by three at the end of the calculation previously described, since the original value would describe only CPU clock cycles per clock interval timer tick.

The reason a quantum was stored internally as a fraction of a clock tick rather than as an entire tick was to allow for partial quantum decay on wait completion on versions of Windows prior to Windows Vista. Prior versions used the clock interval timer for quantum expiration. If this adjustment were not made, it would have been possible for threads never to have their quantums reduced. For example, if a thread ran, entered a wait state, ran again, and entered another wait state but was never the currently running thread when the clock interval timer fired, it would never have its quantum charged for the time it was running. Because threads now have CPU clock cycles charged instead of quantums, and because this no longer depends on the clock interval timer, these adjustments are not required.

Controlling the Quantum

You can change the thread quantum for all processes, but you can choose only one of two settings: short (2 clock ticks, the default for client machines) or long (12 clock ticks, the default for server systems).

To change this setting, right-click on your computer name's icon on the desktop, choose Properties, click the Advanced System Settings label, select the Advanced tab, click the Settings button in the Performance section, and finally click the Advanced tab. The dialog box displayed is shown in Figure 5-16.

Figure 5-16. Quantum configuration in the Performance Options dialog box

The Programs setting designates the use of short, variable quantums-the default for Windows Vista. If you install Terminal Services on Windows Server 2008 systems and configure the server as an application server, this setting is selected so that the users on the terminal server will have the same quantum settings that would normally be set on a desktop or client system. You might also select this manually if you were running Windows Server as your desktop operating system.

The Background Services option designates the use of long, fixed quantums-the default for Windows Server 2008 systems. The only reason you might select this option on a workstation system is if you were using the workstation as a server system.

One additional difference between the Programs and Background Services settings is the effect they have on the quantum of the threads in the foreground process. This is explained in the next section.

Quantum Boosting

When a window is brought into the foreground on a client system, all the threads in the process containing the thread that owns the foreground window have their quantums tripled. Thus, threads in the foreground process run with a quantum of 6 clock ticks, whereas threads in other processes have the default client quantum of 2 clock ticks. In this way, when you switch away from a CPU-intensive process, the new foreground process will get proportionally more of the CPU, because when its threads run they will have a longer turn than background threads (again, assuming the thread priorities are the same in both the foreground and background processes).

Note that this adjustment of quantums applies only to processes with a priority higher than Idle on systems configured to Programs in the Performance Options settings described in the previous section. Thread quantums are not changed for the foreground process on systems configured to Background Services (the default on Windows Server 2008 systems).

Quantum Settings Registry Value

The user interface to control quantum settings described earlier modifies the registry value HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation. In addition to specifying the relative length of thread quantums (short or long), this registry value also defines whether or not threads in the foreground process should have their quantums boosted (and if so, the amount of the boost). This value consists of 6 bits divided into the three 2-bit fields shown in Figure 5-17.

Figure 5-17. Fields of the Win32PrioritySeparation registry value

The fields shown in Figure 5-17 can be defined as follows:

Short vs. Long A setting of 1 specifies long, and 2 specifies short. A setting of 0 or 3 indicates that the default will be used (short for Windows Vista, long for Windows Server 2008 systems).

Variable vs. Fixed A setting of 1 means to vary the quantum for the foreground process, and 2 means that quantum values don't change for foreground processes. A setting of 0 or 3 means that the default (which is variable for Windows Vista and fixed for Windows Server 2008 systems) will be used.

Foreground Quantum Boost This field (stored in the kernel variable PsPrioritySeperation) must have a value of 0, 1, or 2. (A setting of 3 is invalid and treated as 2.) It is used as an index into a three-element byte array named PspForegroundQuantum to obtain the quantum for the threads in the foreground process. The quantum for threads in background processes is taken from the first entry in this quantum table. Table 5-17 shows the possible settings for PspForegroundQuantum.

Table 5-17. Quantum Values

Note that when you're using the Performance Options dialog box described earlier, you can choose from only two combinations: short quantums with foreground quantums tripled, or long quantums with no quantum changes for foreground threads. However, you can select other combinations by modifying the Win32PrioritySeparation registry value directly.

Scheduling Scenarios

Windows bases the question of "Who gets the CPU?" on thread priority; but how does this approach work in practice? The following sections illustrate just how priority-driven preemptive multitasking works on the thread level.

Voluntary Switch

First a thread might voluntarily relinquish use of the processor by entering a wait state on some object (such as an event, a mutex, a semaphore, an I/O completion port, a process, a thread, a window message, and so on) by calling one of the Windows wait functions (such as WaitForSingleObject or WaitForMultipleObjects). Waiting for objects is described in more detail in Chapter 3.

Figure 5-18 illustrates a thread entering a wait state and Windows selecting a new thread to run.

In Figure 5-18, the top block (thread) is voluntarily relinquishing the processor so that the next thread in the ready queue can run (as represented by the halo it has when in the Running column). Although it might appear from this figure that the relinquishing thread's priority is being reduced, it's not-it's just being moved to the wait queue of the objects the thread is waiting for.

Figure 5-18. Voluntary switching

Preemption

In this scheduling scenario, a lower-priority thread is preempted when a higher-priority thread becomes ready to run. This situation might occur for a couple of reasons:

In either of these cases, Windows must determine whether the currently running thread should still continue to run or whether it should be preempted to allow a higher-priority thread to run.

When a thread is preempted, it is put at the head of the ready queue for the priority it was running at. Figure 5-19 illustrates this situation.

In Figure 5-19, a thread with priority 18 emerges from a wait state and repossesses the CPU, causing the thread that had been running (at priority 16) to be bumped to the head of the ready queue. Notice that the bumped thread isn't going to the end of the queue but to the beginning; when the preempting thread has finished running, the bumped thread can complete its quantum.

Figure 5-19. Preemptive thread scheduling

Quantum End

When the running thread exhausts its CPU quantum, Windows must determine whether the thread's priority should be decremented and then whether another thread should be scheduled on the processor.

If the thread priority is reduced, Windows looks for a more appropriate thread to schedule. (For example, a more appropriate thread would be a thread in a ready queue with a higher priority than the new priority for the currently running thread.) If the thread priority isn't reduced and there are other threads in the ready queue at the same priority level, Windows selects the next thread in the ready queue at that same priority level and moves the previously running thread to the tail of that queue (giving it a new quantum value and changing its state from running to ready). This case is illustrated in Figure 5-20. If no other thread of the same priority is ready to run, the thread gets to run for another quantum.

Figure 5-20. Quantum end thread scheduling

As we've seen, instead of simply relying on a clock interval timer-based quantum to schedule threads, Windows uses an accurate CPU clock cycle count to maintain quantum targets. One factor we haven't yet mentioned is that Windows also uses this count to determine whether quantum end is currently appropriate for the thread-something that may have happened previously and is important to discuss.

Under the scheduling model prior to Windows Vista, which relied only on the clock interval timer, the following situation could occur:

Threads A and B become ready to run during the middle of an interval (scheduling code runs not just at each clock interval, so this is often the case).

Thread A starts running but is interrupted for a while. The time spent handling the interrupt is charged to the thread.

Interrupt processing finishes, thread A starts running again, but it quickly hits the next clock interval. The scheduler can only assume that thread A had been running all this time and now switches to thread B.

Thread B starts running and has a chance to run for a full clock interval (barring pre-emption or interrupt handling).

In this scenario, thread A was unfairly penalized in two different ways. First of all, the time that it had to spend handling a device interrupt was accounted to its own CPU time, even though the thread had probably nothing to do with the interrupt. (Recall that interrupts are handled in the context of whichever thread had been running at the time.) It was also unfairly penalized for the time the system was idling inside that clock interval before it was scheduled.

Figure 5-21 represents this scenario.

Figure 5-21. Unfair time slicing in previous versions of Windows

Because Windows keeps an accurate count of the exact number of CPU clock cycles spent doing work that the thread was scheduled to do (which means excluding interrupts), and because it keeps a quantum target of clock cycles that should have been spent by the thread at the end of its quantum, both of the unfair decisions that would have been made against thread A will not happen in Windows.

Instead, the following situation will occur:

Threads A and B become ready to run during the middle of an interval.

Thread A starts running but is interrupted for a while. The CPU clock cycles spent handling the interrupt are not charged to the thread.

Interrupt processing finishes, thread A starts running again, but it quickly hits the next clock interval. The scheduler looks at the number of CPU clock cycles that have been charged to the thread and compares them to the expected CPU clock cycles that should have been charged at quantum end.

Because the former number is much smaller than it should be, the scheduler assumes that thread A started running in the middle of a clock interval and may have additionally been interrupted.

Thread A gets its quantum increased by another clock interval, and the quantum target is recalculated. Thread A now has its chance to run for a full clock interval.

At the next clock interval, thread A has finished its quantum, and thread B now gets a chance to run.

Figure 5-22 represents this scenario.

Figure 5-22. Fair time slicing in current versions of Windows

Termination

When a thread finishes running (either because it returned from its main routine, called ExitThread, or was killed with TerminateThread), it moves from the running state to the terminated state. If there are no handles open on the thread object, the thread is removed from the process thread list and the associated data structures are deallocated and released.

Context Switching

A thread's context and the procedure for context switching vary depending on the processor's architecture. A typical context switch requires saving and reloading the following data:

The kernel saves this information from the old thread by pushing it onto the current (old thread's) kernel-mode stack, updating the stack pointer, and saving the stack pointer in the old thread's KTHREAD block. The kernel stack pointer is then set to the new thread's kernel stack, and the new thread's context is loaded. If the new thread is in a different process, it loads the address of its page table directory into a special processor register so that its address space is available. (See the description of address translation in Chapter 9.) If a kernel APC that needs to be delivered is pending, an interrupt at IRQL 1 is requested. Otherwise, control passes to the new thread's restored instruction pointer and the new thread resumes execution.

Idle Thread

When no runnable thread exists on a CPU, Windows dispatches the per-CPU idle thread. Each CPU is allotted one idle thread because on a multiprocessor system one CPU can be executing a thread while other CPUs might have no threads to execute.

Various Windows process viewer utilities report the idle process using different names. Task Manager and Process Explorer call it "System Idle Process," while Tlist calls it "System Process." If you look at the EPROCESS structure's ImageFileName member, you'll see the internal name for the process is "Idle." Windows reports the priority of the idle thread as 0 (15 on x64 systems). In reality, however, the idle threads don't have a priority level because they run only when there are no real threads to run-they are not scheduled and never part of any ready queues. (Remember, only one thread per Windows system is actually running at priority 0-the zero page thread, explained in Chapter 9.)

Apart from priority, there are many other fields in the idle process or its threads that may be reported as 0. This occurs because the idle process is not an actual full-blown object manager process object, and neither are its idle threads. Instead, the initial idle thread and idle process objects are statically allocated and used to bootstrap the system before the process manager initializes. Subsequent idle thread structures are allocated dynamically as additional processors are brought online. Once process management initializes, it uses the special variable PsIdleProcess to refer to the idle process.

Apart from some critical fields provided so that these threads and their process can have a PID and name, everything else is ignored, which means that query APIs may simply return zeroed data.

The idle loop runs at DPC/dispatch level, polling for work to do, such as delivering deferred procedure calls (DPCs) or looking for threads to dispatch to. Although some details of the flow vary between architectures, the basic flow of control of the idle thread is as follows:

1. Enables and disables interrupts (allowing any pending interrupts to be delivered).

2. Checks whether any DPCs (described in Chapter 3) are pending on the processor. If DPCs are pending, clears the pending software interrupt and delivers them. (This will also perform timer expiration, as well as deferred ready processing. The latter is explained in the upcoming multiprocessor scheduling section.)

3. Checks whether a thread has been selected to run next on the processor, and if so, dispatches that thread.

4. Calls the registered power management processor idle routine (in case any power management functions need to be performed), which is either in the processor power driver (such as intelppm.sys) or in the HAL if such a driver is unavailable.

5. On debug systems, checks if there is a kernel debugger trying to break into the system and gives it access.

6. If requested, checks for threads waiting to run on other processors and schedules them locally. (This operation is also explained in the upcoming multiprocessor scheduling section.)

Priority Boosts

In six cases, the Windows scheduler can boost (increase) the current priority value of threads:

On completion of I/O operations

After waiting for executive events or semaphores

When a thread has been waiting on an executive resource for too long

After threads in the foreground process complete a wait operation

When GUI threads wake up because of windowing activity

When a thread that's ready to run hasn't been running for some time (CPU starvation)

The intent of these adjustments is to improve overall system throughput and responsiveness as well as resolve potentially unfair scheduling scenarios. Like any scheduling algorithms, however, these adjustments aren't perfect, and they might not benefit all applications.

Windows Vista adds one more scenario in which a priority boost can occur, multimedia playback. Unlike the other priority boosts, which are applied directly by kernel code, multimedia playback boosts are managed by a user-mode service called the MultiMedia Class Scheduler Service (MMCSS). (Although the boosts are still done in kernel mode, the request to boost the threads is managed by this user-mode service.) We'll first cover the typical kernel-managed priority boosts and then talk about MMCSS and the kind of boosting it performs.

Priority Boosting after I/O Completion

Windows gives temporary priority boosts upon completion of certain I/O operations so that threads that were waiting for an I/O will have more of a chance to run right away and process whatever was being waited for. Recall that 1 quantum unit is deducted from the thread's remaining quantum when it wakes up so that I/O bound threads aren't unfairly favored. Although you'll find recommended boost values in the Windows Driver Kit (WDK) header files (by searching for "#define IO" in Wdm.h or Ntddk.h), the actual value for the boost is up to the device driver. (These values are listed in Table 5-18.) It is the device driver that specifies the boost when it completes an I/O request on its call to the kernel function IoCompleteRequest. In Table 5-18, notice that I/O requests to devices that warrant better responsiveness have higher boost values.

Table 5-18. Recommended Boost Values

The boost is always applied to a thread's current priority, not its base priority. As illustrated in Figure 5-23, after the boost is applied, the thread gets to run for one quantum at the elevated priority level. After the thread has completed its quantum, it decays one priority level and then runs another quantum. This cycle continues until the thread's priority level has decayed back to its base priority. A thread with a higher priority can still preempt the boosted thread, but the interrupted thread gets to finish its time slice at the boosted priority level before it decays to the next lower priority.

Figure 5-23. Priority boosting and decay

As noted earlier, these boosts apply only to threads in the dynamic priority range (0 through 15). No matter how large the boost is, the thread will never be boosted beyond level 15 into the real-time priority range. In other words, a priority 14 thread that receives a boost of 5 will go up to priority 15. A priority 15 thread that receives a boost will remain at priority 15.

Boosts After Waiting for Events and Semaphores

When a thread that was waiting for an executive event or a semaphore object has its wait satisfied (because of a call to the function SetEvent, PulseEvent, or ReleaseSemaphore), it receives a boost of 1. (See the value for EVENT_ INCREMENT and SEMAPHORE_INCREMENT in the WDK header files.) Threads that wait for events and semaphores warrant a boost for the same reason that threads that wait for I/O operations do-threads that block on events are requesting CPU cycles less frequently than CPU-bound threads. This adjustment helps balance the scales.

This boost operates the same as the boost that occurs after I/O completion, as described in the previous section:

The boost is always applied to the base priority (not the current priority).

The priority will never be boosted above 15.

The thread gets to run at the elevated priority for its remaining quantum (as described earlier, quantums are reduced by 1 when threads exit a wait) before decaying one priority level at a time until it reaches its original base priority.

A special boost is applied to threads that are awoken as a result of setting an event with the special functions NtSetEventBoostPriority(used in Ntdll.dll for critical sections) and KeSetEventBoostPriority (used for executive resources) or if a signaling gate is used (such as with pushlocks). If a thread waiting for an event is woken up as a result of the special event boost function and its priority is 13 or below, it will have its priority boosted to be the setting thread's priority plus one. If its quantum is less than 4 quantum units, it is set to 4 quantum units. This boost is removed at quantum end.

Boosts During Waiting on Executive Resources

When a thread attempts to acquire an executive resource (ERESOURCE; see Chapter 3 for more information on kernel synchronization objects) that is already owned exclusively by another thread, it must enter a wait state until the other thread has released the resource. To avoid deadlocks, the executive performs this wait in intervals of five seconds instead of doing an infinite wait on the resource.

At the end of these five seconds, if the resource is still owned, the executive will attempt to prevent CPU starvation by acquiring the dispatcher lock, boosting the owning thread or threads, and performing another wait. Because the dispatcher lock is held and the thread's WaitNext flag is set to TRUE, this ensures a consistent state during the boosting process until the next wait is done.

This boost operates in the following manner:

The boost is always applied to the base priority (not the current priority) of the owner thread.

The boost raises priority to 14.

The boost is only applied if the owner thread has a lower priority than the waiting thread, and only if the owner thread's priority isn't already 14.

The quantum of the thread is reset so that the thread gets to run at the elevated priority for a full quantum, instead of only the quantum it had left. Just like other boosts, at each quantum end, the priority boost will slowly decrease by one level.

Because executive resources can be either shared or exclusive, the kernel will first boost the exclusive owner and then check for shared owners and boost all of them. When the waiting thread enters the wait state again, the hope is that the scheduler will schedule one of the owner threads, which will have enough time to complete its work and release the resource. It's important to note that this boosting mechanism is used only if the resource doesn't have the Disable Boost flag set, which developers can choose to set if the priority inversion mechanism described here works well with their usage of the resource.

Additionally, this mechanism isn't perfect. For example, if the resource has multiple shared owners, the executive will boost all those threads to priority 14, resulting in a sudden surge of high-priority threads on the system, all with full quantums. Although the exclusive thread will run first (since it was the first to be boosted and therefore first on the ready list), the other shared owners will run next, since the waiting thread's priority was not boosted. Only until after all the shared owners have gotten a chance to run and their priority decreased below the waiting thread will the waiting thread finally get its chance to acquire the resource. Because shared owners can promote or convert their ownership from shared to exclusive as soon as the exclusive owner releases the resource, it's possible for this mechanism not to work as intended.

Priority Boosts for Foreground Threads After Waits

Whenever a thread in the foreground process completes a wait operation on a kernel object, the kernel function KiUnwaitThread boosts its current (not base) priority by the current value of PsPrioritySeperation. (The windowing system is responsible for determining which process is considered to be in the foreground.) As described in the section on quantum controls, PsPrioritySeperation reflects the quantum-table index used to select quantums for the threads of foreground applications. However, in this case, it is being used as a priority boost value.

The reason for this boost is to improve the responsiveness of interactive applications-by giving the foreground application a small boost when it completes a wait, it has a better chance of running right away, especially when other processes at the same base priority might be running in the background.

Unlike other types of boosting, this boost applies to all Windows systems, and you can't disable this boost, even if you've disabled priority boosting using the Windows SetThreadPriorityBoost function.

Priority Boosts After GUI Threads Wake Up

Threads that own windows receive an additional boost of 2 when they wake up because of windowing activity such as the arrival of window messages. The windowing system (Win32k.sys) applies this boost when it calls KeSetEvent to set an event used to wake up a GUI thread. The reason for this boost is similar to the previous one-to favor interactive applications.

Priority Boosts for CPU Starvation

Imagine the following situation: you have a priority 7 thread that's running, preventing a priority 4 thread from ever receiving CPU time; however, a priority 11 thread is waiting for some resource that the priority 4 thread has locked. But because the priority 7 thread in the middle is eating up all the CPU time, the priority 4 thread will never run long enough to finish whatever it's doing and release the resource blocking the priority 11 thread. What does Windows do to address this situation?

We have previously seen how the executive code responsible for executive resources manages this scenario by boosting the owner threads so that they can have a chance to run and release the resource. However, executive resources are only one of the many synchronization constructs available to developers, and the boosting technique will not apply to any other primitive. Therefore, Windows also includes a generic CPU starvation relief mechanism as part of a thread called the balance set manager (a system thread that exists primarily to perform memory management functions and is described in more detail in Chapter 9).

Once per second, this thread scans the ready queues for any threads that have been in the ready state (that is, haven't run) for approximately 4 seconds. If it finds such a thread, the balance set manager boosts the thread's priority to 15 and sets the quantum target to an equivalent CPU clock cycle count of 4 quantum units. Once the quantum is expired, the thread's priority decays immediately to its original base priority. If the thread wasn't finished and a higher priority thread is ready to run, the decayed thread will return to the ready queue, where it again becomes eligible for another boost if it remains there for another 4 seconds.

The balance set manager doesn't actually scan all ready threads every time it runs. To minimize the CPU time it uses, it scans only 16 ready threads; if there are more threads at that priority level, it remembers where it left off and picks up again on the next pass. Also, it will boost only 10 threads per pass-if it finds 10 threads meriting this particular boost (which would indicate an unusually busy system), it stops the scan at that point and picks up again on the next pass.

Will this algorithm always solve the priority inversion issue? No-it's not perfect by any means. But over time, CPU-starved threads should get enough CPU time to finish whatever processing they were doing and reenter a wait state.

Priority Boosts for MultiMedia Applications and Games (MMCSS)

As we've just seen in the last experiment, although Windows's CPU starvation priority boosts may be enough to get a thread out of an abnormally long wait state or potential deadlock, they simply cannot deal with the resource requirements imposed by a CPU-intensive application such as Windows Media Player or a 3D computer game.

Skipping and other audio glitches have been a common source of irritation among Windows users in the past, and the user-mode audio stack in Windows Vista would have only made the situation worse since it offers even more chances for preemption. To address this, Windows Vista incorporates a new service (called MMCSS, described earlier in this chapter) whose purpose is to ensure "glitch-free" multimedia playback for applications that register with it.

MMCSS works by defining several tasks, including:

In turn, each of these tasks includes information about the various properties that differentiate them. The most important one for scheduling is called the Scheduling Category, which is the primary factor determining the priority of threads registered with MMCSS. Table 5-19 shows the various scheduling categories.

Table 5-19. Scheduling Categories

The main mechanism behind MMCSS boosts the priority of threads inside a registered process to the priority level matching their scheduling category and relative priority within this category for a guaranteed period of time. It then lowers those threads to the Exhausted category so that other, nonmultimedia threads on the system can also get a chance to execute.

By default, multimedia threads will get 80 percent of the CPU time available, while other threads will receive 20 percent (based on a sample of 10 ms; in other words, 8 ms and 2 ms). MMCSS itself runs at priority 27, since it needs to preempt any Pro Audio threads in order to lower their priority to the Exhausted category.

It is important to emphasize that the kernel still does the actual boosting of the values inside the KTHREAD (MMCSS simply makes the same kind of system call any other application would do), and the scheduler is still in control of these threads. It is simply their high priority that makes them run almost uninterrupted on a machine, since they are in the real-time range and well above threads that most user applications would be running in.

As was discussed earlier, changing the relative thread priorities within a process does not usually make sense, and no tool allows this because only developers understand the importance of the various threads in their programs.

On the other hand, because applications must manually register with MMCSS and provide it with information about what kind of thread this is, MMCSS does have the necessary data to change these relative thread priorities (and developers are well aware that this will be happening).

MMCSS's functionality does not stop at simple priority boosting, however. Because of the nature of network drivers on Windows and the NDIS stack, DPCs are quite common mechanisms for delaying work after an interrupt has been received from the network card. Because DPCs run at an IRQL level higher than user-mode code (see Chapter 3 for more information on DPCs and IRQLs), long-running network card driver code could still interrupt media playback during network transfers, or when playing a game for example.

Therefore, MMCSS also sends a special command to the network stack, telling it to throttle network packets during the duration of the media playback. This throttling is designed to maximize playback performance, at the cost of some small loss in network throughput (which would not be noticeable for network operations usually performed during playback, such as playing an online game). The exact mechanisms behind it do not belong to any area of the scheduler, so we will leave them out of this description.

Multiprocessor Systems

On a uniprocessor system, scheduling is relatively simple: the highest-priority thread that wants to run is always running. On a multiprocessor system, it is more complex, as Windows attempts to schedule threads on the most optimal processor for the thread, taking into account the thread's preferred and previous processors, as well as the configuration of the multiprocessor system. Therefore, while Windows attempts to schedule the highest-priority runnable threads on all available CPUs, it only guarantees to be running the (single) highest-priority thread somewhere.

Before we describe the specific algorithms used to choose which threads run where and when, let's examine the additional information Windows maintains to track thread and processor state on multiprocessor systems and the two different types of multiprocessor systems supported by Windows (hyperthreaded, multicore, and NUMA).

Multiprocessor Considerations in the Dispatcher Database

In addition to the ready queues and the ready summary, Windows maintains two bitmasks that track the state of the processors on the system. (How these bitmasks are used is explained in the upcoming section Multiprocessor Thread-Scheduling Algorithms.) Following are the two bitmasks that Windows maintains:

The active processor mask (KeActiveProcessors), which has a bit set for each usable processor on the system (This might be less than the number of actual processors if the licensing limits of the version of Windows running supports less than the number of available physical processors.)

The idle summary ( KiIdleSummary), in which each set bit represents an idle processor

Whereas on uniprocessor systems, the dispatcher database is locked by raising IRQL to both DPC/dispatch level and Synch level, on multiprocessor systems more is required, because each processor could, at the same time, raise IRQL and attempt to operate on the dispatcher database. (This is true for any systemwide structure accessed from high IRQL.) (See Chapter 3 for a general description of kernel synchronization and spinlocks.)

Because on a multiprocessor system one processor might need to modify another processor's per-CPU scheduling data structures (such as inserting a thread that would like to run on a certain processor), these structures are synchronized by using a new per-PRCB queued spinlock, which is held at IRQL SYNCH_LEVEL. (See Table 5-20 for the various values of SYNCH_LEVEL.) Thus, thread selection can occur while locking only an individual processor's PRCB, in contrast to doing this on Windows XP, where the systemwide dispatcher spinlock had to be held.

Table 5-20. IRQL SYNCH_LEVEL on Multiprocessor Systems

There is also a per-CPU list of threads in the deferred ready state. These represent threads that are ready to run but have not yet been readied for execution; the actual ready operation has been deferred to a more appropriate time. Because each processor manipulates only its own per-processor deferred ready list, this list is not synchronized by the PRCB spinlock. The deferred ready thread list is processed before exiting the thread dispatcher, before performing a context switch, and after processing a DPC. Threads on the deferred ready list are either dispatched immediately or are moved to the per-processor ready queue for their priority level.

Note that the systemwide dispatcher spinlock still exists and is used, but it is held only for the time needed to modify systemwide state that might affect which thread runs next. For example, changes to synchronization objects (mutexes, events, and semaphores) and their wait queues require holding the dispatcher lock to prevent more than one processor from changing the state of such objects (and the consequential action of possibly readying threads for execution). Other examples include changing the priority of a thread, timer expiration, and swapping of thread kernel stacks.

Thread context switching is also synchronized by using a finer-grained per-thread spinlock, whereas in Windows XP context switching was synchronized by holding a systemwide context swap spinlock.

Hyperthreaded and Multicore Systems

As described in the Symmetric Multiprocessing section in Chapter 2, Windows supports hyperthreaded and multicore multiprocessor systems in two primary ways:

1. Logical processors as well as per-package cores do not count against physical processor licensing limits. For example, Windows Vista Home Basic, which has a licensed processor limit of 1, will use all four cores on a single processor system.

2. When choosing a processor for a thread, if there is a physical processor with all logical processors idle, a logical processor from that physical processor will be selected, as opposed to choosing an idle logical processor on a physical processor that has another logical processor running a thread.

NUMA Systems

Another type of multiprocessor system supported by Windows is one with a nonuniform memory access (NUMA) architecture. In a NUMA system, processors are grouped together in smaller units called nodes. Each node has its own processors and memory and is connected to the larger system through a cache-coherent interconnect bus. These systems are called "nonuniform" because each node has its own local high-speed memory. While any processor in any node can access all of memory, node-local memory is much faster to access.

The kernel maintains information about each node in a NUMA system in a data structure called KNODE. The kernel variable KeNodeBlock is an array of pointers to the KNODE structures for each node. The format of the KNODE structure can be shown using the dt command in the kernel debugger, as shown here:

lkd> dt nt!_knode
nt!_KNODE
   +0x000 PagedPoolSListHead : _SLIST_HEADER
   +0x008 NonPagedPoolSListHead : [3] _SLIST_HEADER
   +0x020 PfnDereferenceSListHead : _SLIST_HEADER
   +0x028 ProcessorMask    : Uint4B
   +0x02c Color            : UChar
   +0x02d Seed             : UChar
   +0x02e NodeNumber       : UChar
   +0x02f Flags            : _flags
   +0x030 MmShiftedColor   : Uint4B
   +0x034 FreeCount        : [2] Uint4B
   +0x03c PfnDeferredList  : Ptr32 _SINGLE_LIST_ENTRY
   +0x040 CachedKernelStacks : _CACHED_KSTACK_LIST

Applications that want to gain the most performance out of NUMA systems can set the affinity mask to restrict a process to the processors in a specific node. This information can be obtained using the functions listed in Table 5-21. Functions that can alter thread affinity are listed in Table 5-13.

Table 5-21. NUMA-Related Functions

How the scheduling algorithms take into account NUMA systems will be covered in the upcoming section Multiprocessor Thread-Scheduling Algorithms (and the optimizations in the memory manager to take advantage of node-local memory are covered in Chapter 9).

Affinity

Each thread has an affinity mask that specifies the processors on which the thread is allowed to run. The thread affinity mask is inherited from the process affinity mask. By default, all processes (and therefore all threads) begin with an affinity mask that is equal to the set of active processors on the system-in other words, the system is free to schedule all threads on any available processor.

However, to optimize throughput and/or partition workloads to a specific set of processors, applications can choose to change the affinity mask for a thread. This can be done at several levels:

Calling the SetThreadAffinityMask function to set the affinity for an individual thread

Calling the SetProcessAffinityMask function to set the affinity for all the threads in a process. Task Manager and Process Explorer provide a GUI to this function if you right-click a process and choose Set Affinity. The Psexec tool (from Sysinternals) provides a command-line interface to this function. (See the -a switch.)

By making a process a member of a job that has a jobwide affinity mask set using the SetInformationJobObject function (Jobs are described in the upcoming Job Objects section.)

By specifying an affinity mask in the image header when compiling the application (For more information on the detailed format of Windows images, search for "Portable Executable and Common Object File Format Specification" on www.microsoft.com.)

You can also set the "uniprocessor" flag for an image (at compile time). If this flag is set, the system chooses a single processor at process creation time and assigns that as the process affinity mask, starting with the first processor and then going round-robin across all the processors. For example, on a dual-processor system, the first time you run an image marked as uniprocessor, it is assigned to CPU 0; the second time, CPU 1; the third time, CPU 0; the fourth time, CPU 1; and so on. This flag can be useful as a temporary workaround for programs that have multithreaded synchronization bugs that, as a result of race conditions, surface on multiprocessor systems but that don't occur on uniprocessor systems. (This has actually saved the authors of this book on two different occasions.)

Windows won't move a running thread that could run on a different processor from one CPU to a second processor to permit a thread with an affinity for the first processor to run on the first processor. For example, consider this scenario: CPU 0 is running a priority 8 thread that can run on any processor, and CPU 1 is running a priority 4 thread that can run on any processor. A priority 6 thread that can run on only CPU 0 becomes ready. What happens? Windows won't move the priority 8 thread from CPU 0 to CPU 1 (preempting the priority 4 thread) so that the priority 6 thread can run; the priority 6 thread has to wait.

Therefore, changing the affinity mask for a process or a thread can result in threads getting less CPU time than they normally would, as Windows is restricted from running the thread on certain processors. Therefore, setting affinity should be done with extreme care-in most cases, it is optimal to let Windows decide which threads run where.

Ideal and Last Processor

Each thread has two CPU numbers stored in the kernel thread block:

Ideal processor, or the preferred processor that this thread should run on

Last processor, or the processor on which the thread last ran

The ideal processor for a thread is chosen when a thread is created using a seed in the process block. The seed is incremented each time a thread is created so that the ideal processor for each new thread in the process will rotate through the available processors on the system. For example, the first thread in the first process on the system is assigned an ideal processor of 0. The second thread in that process is assigned an ideal processor of 1. However, the next process in the system has its first thread's ideal processor set to 1, the second to 2, and so on. In that way, the threads within each process are spread evenly across the processors.

Note that this assumes the threads within a process are doing an equal amount of work. This is typically not the case in a multithreaded process, which normally has one or more housekeeping threads and then a number of worker threads. Therefore, a multithreaded application that wants to take full advantage of the platform might find it advantageous to specify the ideal processor numbers for its threads by using the SetThreadIdealProcessor function.

On hyperthreaded systems, the next ideal processor is the first logical processor on the next physical processor. For example, on a dual-processor hyperthreaded system with four logical processors, if the ideal processor for the first thread is assigned to logical processor 0, the second thread would be assigned to logical processor 2, the third thread to logical processor 1, the fourth thread to logical process 3, and so forth. In this way, the threads are spread evenly across the physical processors.

On NUMA systems, when a process is created, an ideal node for the process is selected. The first process is assigned to node 0, the second process to node 1, and so on. Then, the ideal processors for the threads in the process are chosen from the process's ideal node. The ideal processor for the first thread in a process is assigned to the first processor in the node. As additional threads are created in processes with the same ideal node, the next processor is used for the next thread's ideal processor, and so on.

Dynamic Processor Addition and Replacement

As we've seen, developers can fine-tune which threads are allowed to (and in the case of the ideal processor, should) run on which processor. This works fine on systems that have a constant number of processors during their run time (for example, desktop machines require shutting down the computer to make any sort of hardware changes to the processor or their count).

Today's server systems, however, cannot afford the downtime that CPU replacement or addition normally requires. In fact, one of the times when adding a CPU is required for a server is at times of high load that is above what the machine can support at its current level of performance. Having to shut down the server during a period of peak usage would defeat the purpose. To meet this requirement, the latest generation of server motherboards and systems support the addition of processors (as well as their replacement) while the machine is still running. The ACPI BIOS and related hardware on the machine have been specifically built to allow and be aware of this need, but operating system participation is required for full support.

Dynamic processor support is provided through the HAL, which will notify the kernel of a new processor on the system through the function KeStartDynamicProcessor. This routine does similar work to that performed when the system detects more than one processor at startup and needs to initialize the structures related to them. When a dynamic processor is added, a variety of system components perform some additional work. For example, the memory manager allocates new pages and memory structures optimized for the CPU. It also initializes a new DPC kernel stack while the kernel initializes the Global Descriptor Table (GDT), the Interrupt Descriptor Table ( IDT), the processor control region (PCR), the processor control block (PRCB), and other related structures for the processor.

Other executive parts of the kernel are also called, mostly to initialize the per-processor lookaside lists for the processor that was added. For example, the I/O manager, the executive lookaside list code, the cache manager, and the object manager all use per-processor look-aside lists for their frequently allocated structures.

Finally, the kernel initializes threaded DPC support for the processor and adjusts exported kernel variables to report the new processor. Different memory manager masks and process seeds based on processor counts are also updated, and processor features need to be updated for the new processor to match the rest of the system (for example, enabling virtualization support on the newly added processor). The initialization sequence completes with the notification to the Windows Hardware Error Architecture (WHEA) component that a new processor is online.

The HAL is also involved in this process. It is called once to start the dynamic processor after the kernel is aware of it, and it is called again after the kernel has finished initialization of the processor. However, these notifications and callbacks only make the kernel aware and respond to processor changes. Although an additional processor increases the throughput of the kernel, it does nothing to help drivers.

To handle drivers, the system has a new default executive callback, the processor add callback, that drivers can register with for notifications. Similar to the callbacks that notify drivers of power state or system time changes, this callback allows driver code to, for example, create a new worker thread if desirable so that it can handle more work at the same time.

Once drivers are notified, the final kernel component called is the Plug and Play manager, which adds the processor to the system's device node and rebalances interrupts so that the new processor can handle interrupts that were already registered for other processors. Unfortunately, until now, CPU-hungry applications have still been left out of this process, but Windows Server 2008 and Windows Vista Service Pack 1 have improved the process to allow applications to be able to take advantage of newer processors as well.

However, a sudden change of affinity can have potentially breaking changes for a running application (especially when going from a single-processor to a multiprocessor environment) through the appearance of potential race conditions or simply misdistribution of work (since the process might have calculated the perfect ratios at startup, based on the number of CPUs it was aware of). As a result, applications do not take advantage of a dynamically added processor by default-they must request it.

The Windows APIs SetProcessAffinityUpdateMode and QueryProcessAffinityMode (which use the undocumented NtSet/QueryInformationProcess system call) tell the process manager that these applications should have their affinity updated (by setting the AffinityUpdateEnable flag in EPROCESS), or that they do not want to deal with affinity updates (by setting the AffinityPermanent flag in EPROCESS). Once an application has told the system that its affinity is permanent, it cannot later change its mind and request affinity updates, so this is a one-time change.

As part of KeStartDynamicProcessor, a new step has been added after interrupts are rebalanced, which is to call the process manager to perform affinity updates through PsUpdateActiveProcessAffinity. Some Windows core processes and services already have affinity updates enabled, while third-party software will need to be recompiled to take advantage of the new API call. The System process, Svchost processes, and Smss are all compatible with dynamic processor addition.

Multiprocessor Thread-Scheduling Algorithms

Now that we've described the types of multiprocessor systems supported by Windows as well as the thread affinity and ideal processor settings, we're ready to examine how this information is used to determine which threads run where. There are two basic decisions to describe:

Choosing a Processor for a Thread When There Are Idle Processors

When a thread becomes ready to run, Windows first tries to schedule the thread to run on an idle processor. If there is a choice of idle processors, preference is given first to the thread's ideal processor, then to the thread's previous processor, and then to the currently executing processor (that is, the CPU on which the scheduling code is running).

To select the best idle processor, Windows starts with the set of idle processors that the thread's affinity mask permits it to run on. If the system is NUMA and there are idle CPUs in the node containing the thread's ideal processor, the list of idle processors is reduced to that set. If this eliminates all idle processors, the reduction is not done. Next, if the system is running hyperthreaded processors and there is a physical processor with all logical processors idle, the list of idle processors is reduced to that set. If that results in an empty set of processors, the reduction is not done.

If the current processor (the processor trying to determine what to do with the thread that wants to run) is in the remaining idle processor set, the thread is scheduled on it. If the current processor is not in the remaining set of idle processors, it is a hyperthreaded system, and there is an idle logical processor on the physical processor containing the ideal processor for the thread, the idle processors are reduced to that set. If not, the system checks whether there are any idle logical processors on the physical processor containing the thread's previous processor. If that set is nonzero, the idle processors are reduced to that list. Finally, the lowest numbered CPU in the remaining set is selected as the processor to run the thread on.

Once a processor has been selected for the thread to run on, that thread is put in the standby state and the idle processor's PRCB is updated to point to this thread. When the idle loop on that processor runs, it will see that a thread has been selected to run and will dispatch that thread.

Choosing a Processor for a Thread When There Are No Idle Processors

If there are no idle processors when a thread wants to run, Windows compares the priority of the thread running (or the one in the standby state) on the thread's ideal processor to determine whether it should preempt that thread.

If the thread's ideal processor already has a thread selected to run next (waiting in the standby state to be scheduled) and that thread's priority is less than the priority of the thread being readied for execution, the new thread preempts that first thread out of the standby state and becomes the next thread for that CPU. If there is already a thread running on that CPU, Windows checks whether the priority of the currently running thread is less than the thread being readied for execution. If so, the currently running thread is marked to be preempted and Windows queues an interprocessor interrupt to the target processor to preempt the currently running thread in favor of this new thread.

If the ready thread cannot be run right away, it is moved into the ready state where it awaits its turn to run. Note that threads are always put on their ideal processor's per-processor ready queues.

Selecting a Thread to Run on a Specific CPU

Because each processor has its own list of threads waiting to run on that processor, when a thread finishes running, the processor can simply check its per-processor ready queue for the next thread to run. If the per-processor ready queues are empty, the idle thread for that processor is scheduled. The idle thread then begins scanning other processor's ready queues for threads it can run. Note that on NUMA systems, the idle thread first looks at processors on its node before looking at other nodes' processors.

CPU Rate Limits

As part of the new hard quota management system added in Windows Vista (which builds on previous quota support present since the first version of Windows NT, but adds hard limits instead of soft hints), support for limiting CPU usage was added to the system in three different ways: per-session, per-user, or per-system. Unfortunately, information on enabling these new limits has not yet been documented, and no tool that is part of the operating system allows you to set these limits: you must modify the registry settings manually. Because all the quotas-save one-are memory quotas, we will cover those in Chapter 9, which deals with the memory manager, and focus our attention on the CPU rate limit.

The new quota system can be accessed through the registry key HKLM\SYSTEM\Current-ControlSet\Control\Session Manager\QuotaSystem, as well as through the standard NtSet-InformationProcess system call. CPU rate limits can therefore be set in one of three ways:

By creating a new value called CpuRateLimit and entering the rate information.

By creating a new key with the security ID (SID) of the account you want to limit, and creating a CpuRateLimit value inside that key.

By calling NtSetInformationProcess and giving it the process handle of the process to limit and the CPU rate limiting information.

In all three cases, the CPU rate limit data is not a straightforward value; it is based on a compressed bitfield, documented in the WDK as part of the RATE_QUOTA_LIMIT structure. The bottom four bits define the rate phase, which can be expressed either as one, two, or three seconds-this value defines how often the rate limiting should be applied and is called the PS_RATE_PHASE. The rest of the bits are used for the actual rate, as a value representing a percentage of maximum CPU usage. Because any number from 0 to 100 can be represented with only 7 bits, the rest of the bits are unused. Therefore, a rate limit of 40 percent every 2 seconds would be defined by the value 0x282, or 101000 0010 in binary.

The process manager, which is responsible for enforcing the CPU rate limit, uses a variety of system mechanisms to do its job. First of all, rate limiting is able to reliably work because of the CPU cycle count improvements discussed earlier, which allow the process manager to accurately determine how much CPU time a process has taken and know whether the limit should be enforced. It then uses a combination of DPC and APC routines to throttle down DPC and APC CPU usage, which are outside the direct control of user-mode developers but still result in CPU usage in the system (in the case of a systemwide CPU rate limit).

Finally, the main mechanism through which rate limiting works is by creating an artificial wait on a kernel gate object (making the thread uniquely bound to this object and putting it in a wait state, which does not consume CPU cycles). This mechanism operates through the normal routine of an APC object queued to the thread or threads inside the process currently responsible for the work. The gate is signaled by an internal worker thread inside the process manager responsible for replenishment of the CPU usage, which is queued by a DPC responsible for replenishing systemwide CPU usage requests.

# data[].attributes.attachment_link.title
Processes, Threads, and Jobs in the Windows Operating System

# data[].attributes.attachment_link.description
In this chapter from Windows Internals, 5th Edition , learn the data structures and algorithms that deal with processes, threads, and jobs in the Windows operating system. The first section focuses on the internal structures that make up a process. The second section outlines the steps involved in creating a process (and its initial thread).

# data[].attributes.body
https://www.compuhoy.com/que-algoritmo-de-programacion-se-usa-en-windows-10/

# data[].attributes.attachment_link.readable_text
Programación de Windows: subprocesos programados de Windows utilizando un algoritmo de programación preventivo basado en prioridades. El planificador asegura que siempre se ejecutará el subproceso de mayor prioridad.

¿Qué algoritmo de programación se utiliza en Windows?

No existe un algoritmo de programación "mejor" universal, y muchos sistemas operativos utilizan algoritmos de programación extendidos o combinaciones de los anteriores. Por ejemplo, Windows NT / XP / Vista utiliza una cola de retroalimentación multinivel, una combinación de programación preventiva de prioridad fija, round-robin y algoritmos de primero en entrar, primero en salir.

¿Qué algoritmo de programación es mejor?

El cálculo de tres algoritmos muestra los diferentes tiempos de espera medios. El FCFS es mejor para un tiempo de ráfaga pequeño. El SJF es mejor si el proceso llega al procesador simultáneamente. El último algoritmo, Round Robin, es mejor para ajustar el tiempo de espera promedio deseado.

¿Cuáles son los tipos de algoritmos de programación?

Seis tipos de algoritmos de programación de procesos son: Primero llegado, primero servido (FCFS), 2) Programación de trabajo más corto, primero (SJF) 3) Tiempo restante más corto 4) Programación de prioridad 5) Programación por turnos 6) Programación de colas multinivel.

¿Qué es el algoritmo de programación en el sistema operativo?

Anuncios. Un programador de procesos programa diferentes procesos para ser asignados a la CPU en función de algoritmos de programación particulares. Hay seis algoritmos de programación de procesos populares que discutiremos en este capítulo: Programación por orden de llegada (FCFS).

¿Cuáles son los 5 tipos de programación?

Incluyen programación de tiempo especificado, programación de oleadas, programación de oleadas modificadas, reserva doble y reserva abierta. Muchos consultorios permiten que los pacientes establecidos soliciten citas o programen citas a través de Internet.

¿Qué es el algoritmo round robin?

Round-robin (RR) es uno de los algoritmos empleados por los programadores de procesos y redes en la informática. Como se usa generalmente el término, los segmentos de tiempo (también conocidos como cuantos de tiempo) se asignan a cada proceso en partes iguales y en orden circular, manejando todos los procesos sin prioridad (también conocido como ejecutivo cíclico).

¿Cuáles son las desventajas de la programación FCFS?

Desventajas: este método de programación no es preventivo, es decir, el proceso se ejecutará hasta que finalice. Debido a esta programación no preventiva, los procesos cortos que están al final de la cola tienen que esperar a que finalice el proceso largo al principio.

¿Cuáles son las características de un buen algoritmo de programación?

Varios criterios o características que ayudan a diseñar un buen algoritmo de programación son:

Utilización de la CPU: se debe diseñar un algoritmo de programación para que la CPU permanezca ocupada lo más posible. ...

Rendimiento: el rendimiento es la cantidad de trabajo completado en una unidad de tiempo.

¿Cómo se calcula la programación de FCFS?

Usando el algoritmo de programación FCFS, estos procesos se manejan de la siguiente manera. Paso 1) En el momento = 1, llega P3. P4 todavía se está ejecutando. Por tanto, P3 se mantiene en cola.
...
¿Cómo funciona FCFS? Cálculo del tiempo medio de espera.

¿Cuáles son los 3 tipos diferentes de colas de programación?

Colas de programación de procesos

Cola de trabajos: esta cola mantiene todos los procesos en el sistema.

Cola lista: esta cola mantiene un conjunto de todos los procesos que residen en la memoria principal, listos y esperando para ejecutarse. ...

Colas de dispositivos: los procesos que están bloqueados debido a la falta de disponibilidad de un dispositivo de E / S constituyen esta cola.

¿A qué te refieres con programación?

La programación es el proceso de organizar, controlar y optimizar el trabajo y las cargas de trabajo en un proceso de producción o proceso de fabricación. ... En la fabricación, el propósito de la programación es minimizar el tiempo y los costos de producción, indicando a una instalación de producción cuándo hacer, con qué personal y en qué equipo.

¿Cuántos tipos de horarios existen?

Los tres tipos de programación se conocen como programación de capacidad, programación de recursos y programación de servicio. De alguna manera, se superponen en lo que pueden hacer y, para algunas aplicaciones, más de uno funcionará. Obtendrá la mejor experiencia si sabe qué tipo de horario es apropiado para su situación.

¿Qué es el algoritmo FIFO?

El algoritmo de reemplazo de página más simple es un algoritmo FIFO. El algoritmo de reemplazo de página primero en entrar, primero en salir (FIFO) es un algoritmo de baja sobrecarga que requiere poca contabilidad por parte del sistema operativo. En palabras simples, en un error de página, se reemplaza el marco que ha estado más tiempo en la memoria.

¿Por qué necesitamos algoritmos de programación de CPU?

La programación de la CPU es un proceso que permite que un proceso use la CPU mientras la ejecución de otro proceso está en espera (en estado de espera) debido a la falta de disponibilidad de cualquier recurso como E / S, etc., haciendo así un uso completo de la CPU. El objetivo de la programación de la CPU es hacer que el sistema sea eficiente, rápido y justo.

# data[].attributes.attachment_link.title
¿Qué algoritmo de programación se usa en Windows 10? - CompuHoy.com

# data[].attributes.attachment_link.description
Si está buscando ¿Qué algoritmo de programación se usa en Windows 10? haga clic aquí. En Compuhoy.com encontrarás todas las respuestas sobre sistemas

# data[].attributes.attachment_link.readable_text
Programación de Windows: subprocesos programados de Windows utilizando un algoritmo de programación preventivo basado en prioridades. El planificador asegura que siempre se ejecutará el subproceso de mayor prioridad.

¿Qué algoritmo de programación se utiliza en Windows?

No existe un algoritmo de programación "mejor" universal, y muchos sistemas operativos utilizan algoritmos de programación extendidos o combinaciones de los anteriores. Por ejemplo, Windows NT / XP / Vista utiliza una cola de retroalimentación multinivel, una combinación de programación preventiva de prioridad fija, round-robin y algoritmos de primero en entrar, primero en salir.

¿Qué algoritmo de programación es mejor?

El cálculo de tres algoritmos muestra los diferentes tiempos de espera medios. El FCFS es mejor para un tiempo de ráfaga pequeño. El SJF es mejor si el proceso llega al procesador simultáneamente. El último algoritmo, Round Robin, es mejor para ajustar el tiempo de espera promedio deseado.

¿Cuáles son los tipos de algoritmos de programación?

Seis tipos de algoritmos de programación de procesos son: Primero llegado, primero servido (FCFS), 2) Programación de trabajo más corto, primero (SJF) 3) Tiempo restante más corto 4) Programación de prioridad 5) Programación por turnos 6) Programación de colas multinivel.

¿Qué es el algoritmo de programación en el sistema operativo?

Anuncios. Un programador de procesos programa diferentes procesos para ser asignados a la CPU en función de algoritmos de programación particulares. Hay seis algoritmos de programación de procesos populares que discutiremos en este capítulo: Programación por orden de llegada (FCFS).

¿Cuáles son los 5 tipos de programación?

Incluyen programación de tiempo especificado, programación de oleadas, programación de oleadas modificadas, reserva doble y reserva abierta. Muchos consultorios permiten que los pacientes establecidos soliciten citas o programen citas a través de Internet.

¿Qué es el algoritmo round robin?

Round-robin (RR) es uno de los algoritmos empleados por los programadores de procesos y redes en la informática. Como se usa generalmente el término, los segmentos de tiempo (también conocidos como cuantos de tiempo) se asignan a cada proceso en partes iguales y en orden circular, manejando todos los procesos sin prioridad (también conocido como ejecutivo cíclico).

¿Cuáles son las desventajas de la programación FCFS?

Desventajas: este método de programación no es preventivo, es decir, el proceso se ejecutará hasta que finalice. Debido a esta programación no preventiva, los procesos cortos que están al final de la cola tienen que esperar a que finalice el proceso largo al principio.

¿Cuáles son las características de un buen algoritmo de programación?

Varios criterios o características que ayudan a diseñar un buen algoritmo de programación son:

Utilización de la CPU: se debe diseñar un algoritmo de programación para que la CPU permanezca ocupada lo más posible. ...

Rendimiento: el rendimiento es la cantidad de trabajo completado en una unidad de tiempo.

¿Cómo se calcula la programación de FCFS?

Usando el algoritmo de programación FCFS, estos procesos se manejan de la siguiente manera. Paso 1) En el momento = 1, llega P3. P4 todavía se está ejecutando. Por tanto, P3 se mantiene en cola.
...
¿Cómo funciona FCFS? Cálculo del tiempo medio de espera.

¿Cuáles son los 3 tipos diferentes de colas de programación?

Colas de programación de procesos

Cola de trabajos: esta cola mantiene todos los procesos en el sistema.

Cola lista: esta cola mantiene un conjunto de todos los procesos que residen en la memoria principal, listos y esperando para ejecutarse. ...

Colas de dispositivos: los procesos que están bloqueados debido a la falta de disponibilidad de un dispositivo de E / S constituyen esta cola.

¿A qué te refieres con programación?

La programación es el proceso de organizar, controlar y optimizar el trabajo y las cargas de trabajo en un proceso de producción o proceso de fabricación. ... En la fabricación, el propósito de la programación es minimizar el tiempo y los costos de producción, indicando a una instalación de producción cuándo hacer, con qué personal y en qué equipo.

¿Cuántos tipos de horarios existen?

Los tres tipos de programación se conocen como programación de capacidad, programación de recursos y programación de servicio. De alguna manera, se superponen en lo que pueden hacer y, para algunas aplicaciones, más de uno funcionará. Obtendrá la mejor experiencia si sabe qué tipo de horario es apropiado para su situación.

¿Qué es el algoritmo FIFO?

El algoritmo de reemplazo de página más simple es un algoritmo FIFO. El algoritmo de reemplazo de página primero en entrar, primero en salir (FIFO) es un algoritmo de baja sobrecarga que requiere poca contabilidad por parte del sistema operativo. En palabras simples, en un error de página, se reemplaza el marco que ha estado más tiempo en la memoria.

¿Por qué necesitamos algoritmos de programación de CPU?

La programación de la CPU es un proceso que permite que un proceso use la CPU mientras la ejecución de otro proceso está en espera (en estado de espera) debido a la falta de disponibilidad de cualquier recurso como E / S, etc., haciendo así un uso completo de la CPU. El objetivo de la programación de la CPU es hacer que el sistema sea eficiente, rápido y justo.

# data[].attributes.attachment_link.title
¿Qué algoritmo de programación se usa en Windows 10? - CompuHoy.com

# data[].attributes.attachment_link.description
Si está buscando ¿Qué algoritmo de programación se usa en Windows 10? haga clic aquí. En Compuhoy.com encontrarás todas las respuestas sobre sistemas

# data[].attributes.body
https://1984.lsi.us.es/wiki-ssoo/index.php/Planificadores_de_sistemas_operativos_existentes#:~:text=Planificador%20de%20Windows&text=El%20planificador%20utiliza%20Round%20Robin,de%20servidor%20o%20de%20usuario.

Round Robin

# data[].attributes.attachment_link.readable_text
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

Posee un mapa de bits (140 bits), 1 bit para cada prioridad en la que implementan distintas estructuras SCHED_FIFO y SCHED_RR ambas para tiempo real y el resto SCHED_OTHER. Esta ultima estructura posee el número de procesos preparados y dos colas, una para los procesos pendientes y otra para los que ya han consumido su quantum. Cuando un proceso solo consume una parte de su quantum es insertado al final de la cola de pendientes con lo que le queda de su ventana de tiempo(es decir, si ha consumido el 25% la siguiente vez que sea asignado al procesador solo tendra el 75% del quantum), y si consume totalmente su tiempo de asignación al procesador este pasa a la cola de consumido hasta que este totalmente vacía la cola de pendientes. (Esto se hace para compensar los procesos más interactivos)

     Esquema de estructura de SCHED_OTHER:

        struct{
           int num_procesos_preparados
           cola pendientes
           cola consumido_quantum
        }

La planificación en el kernel de Mac OS X esta basada en cuatro listas de ejecución, cada una de ellas con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro en función de sus requerimientos, dependiendo de la política en concreto que se utilice en el sistema. En general, es posible manejar estas prioridades mediante los procedimientos definidos en el estándar de llamadas POSIX. Con lo que podemos decir, que se trata de un criterio de planificación en colas multinivel mezclado con prioridades. Algo parecido al planificador SCHED_OTHER de Linux.

Las cuatro listas de ejecución que maneja el planificador de Mac OS X, son:

El planificador utiliza un sistema de multi-cola ordenadas por prioridades. Son 32 niveles de prioridades (de 0 a 31) que se dividen de la siguiente forma:

- Niveles 16 a 31: Tiempo Real
- Niveles 1 a 15: Variable
- Nivel 0: Reservado para el sistema

El planificador utiliza Round Robin para recorrer las distintas colas. Tiene un quantum fijo que por defecto valdrá q=2 o q=12, dependiendo de si es un SO de servidor o de usuario. El quantum se puede cambiar entre estos dos valores a través del sistema.

Windows utiliza este sistema de planificación desde Windows NT. Si quieres saber más del sistema de planificación de Windows puedes leer el libro Windows Internals[1](PDF), donde se explica el funcionamiento y las caracteristicas de todo el SO.

4.5. La planificación de procesos de tiempo real

# data[].attributes.attachment_link.title
Planificadores de sistemas operativos existentes

# data[].attributes.attachment_link.description
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

# data[].attributes.body
https://github.com/microsoft/MS-DOS

# data[].attributes.attachment_link.title
GitHub - microsoft/MS-DOS: The original sources of MS-DOS 1.25 and 2.0, for reference purposes

# data[].attributes.attachment_link.description
The original sources of MS-DOS 1.25 and 2.0, for reference purposes - GitHub - microsoft/MS-DOS: The original sources of MS-DOS 1.25 and 2.0, for reference purposes

# data[].attributes.body
https://padlet.com/redirect?url=https%3A%2F%2F1984.lsi.us.es%2Fwiki-ssoo%2Findex.php%2FPlanificadores_de_sistemas_operativos_existentes

Round Robin

# data[].attributes.body
Preemptive, priority-based scheduling algorithm

# data[].attributes.body
Windows Utiliza una planificación Multitarea Cooperativa y La Multitarea con Derecho Preferente algoritmo ejecuta los procesos según la prioridad de estos

# data[].attributes.body
https://www.xataka.com.mx/seguridad/codigo-fuente-windows-xp-se-ha-filtrado-esto-sabemos-como-sucedio-sus-posibles-implicaciones

# data[].attributes.attachment_link.readable_text
El código fuente completo de Windows XP se ha filtrado en línea. Un torrent de 43 GB que compila varios archivos ha sido publicado en 4chan, reporta Bleeping Computer, e incluye código fuente y archivos de otros sistemas operativos de Microsoft.

En el torrent se pueden encontrar archivos de:

MS DOS 3.30

MS DOS 6.0

Windows 2000

Windows CE 3

Windows CE 4

Windows CE 5

Windows Embedded 7

Windows Embedded CE

Windows NT 3.5

Windows NT 4

Los códigos fuente completos de Windows XP y Windows Server 2003 se han filtrado en otro archivo de 2.9 GB, el cual se ha compartido en privado por muchos años entre hackers, asegura el filtrador. De esta manera, la filtración de ahora es la primera vez que el código fuente completo de un sistema operativo de Microsoft se comparte de forma pública.

Bleeping Computer afirma que ha visto el material, pero no tiene manera de confirmar si en verdad se trata del código fuente de Windows XP. Sin embargo, la confirmación viene de parte de The Verge: sí, el material que se comparte es legítimo, es el código fuente de Windows XP.

Posible amenaza a la seguridad de millones de usuarios

Actualmente hay millones de usuarios que aún utilizan Windows XP, principalmente compañías, e incluso el presidente ruso Vladimir Putin, casi 20 años después de su lanzamiento, y a pesar de que dejó de recibir actualizaciones en 2014 y su soporte oficialmente terminó el año pasado.

Según cifras de NetMarketShare correspondientes a agosto de este año, Windows XP tiene una presencia de mercado de 1.26%, equivalentes a aproximadamente 25.2 millones de usuarios.

Desde The Verge apuntan que esta filtración no representa una posible amenaza para aquellas compañías que aún utilizan Windows XP. Sin embargo, existe la posibilidad de que el código fuente ayude a encontrar vulnerabilidades que puedan ser utilizadas para sacar provecho de sus utilidades, por ejemplo en cajeros automáticos que aún utilizan Windows XP. Por otro lado, se dice que Windows 10 hereda mucho código de Windows XP, lo que lleva a la misma situación del descubrimiento de vulnerabilidades y su explotación.

Desde Xataka nos hemos puesto en contacto con Microsoft para esclarecer la situación de la seguridad de los usuarios que aún utilizan Windows XP. En cuanto tengamos respuesta actualizaremos este post con la información.

# data[].attributes.attachment_link.title
El código fuente de Windows XP se ha filtrado: esto sabemos de cómo sucedió y sus posibles implicaciones

# data[].attributes.attachment_link.description
El código fuente completo de Windows XP se ha filtrado en línea. Un torrent de 43 GB que compila varios archivos ha sido publicado en 4chan, reporta Bleeping...

# data[].attributes.attachment_link.readable_text
Para este tema, en vez de emplear unidades temporales formales (p.ej. fracciones de segundo), es común emplear quantums y ticks. Esto es en buena medida porque, si bien en el campo del cómputo las velocidades de acceso y uso efectivo cambian constantemente, los conceptos y las definiciones permanecen. Además, al ser ambos parámetros ajustables, una misma implementación puede sobrevivir ajustándose a la evolución del hardware.

Tick

Una fracción de segundo durante la cual se puede realizar trabajo útil. Es una medida caprichosa y arbitraria; en Linux (a partir de la versión 2.6.8), un tick dura un milisegundo, en Windows, entre 10 y 15 milisegundos.

Quantum

El tiempo mínimo que se permitirá a un proceso el uso del procesador. En Windows, dependiendo de la clase de proceso que se trate, un quantum durará entre 2 y 12 ticks (esto es, entre 20 y 180 ms), y en Linux, entre 10 y 200 ticks (o milisegundos).

¿Qué mecanismos o métricas podemos emplear para medir el comportamiento del sistema bajo determinado planificador? Partamos de los siguientes conceptos, para un proceso que requiere de un tiempo de ejecución:

Tiempo de respuesta ( )

Cuánto tiempo total es necesario para completar el trabajo pendiente de un proceso , incluyendo el tiempo que está inactivo esperando ejecución (pero está en la cola de procesos listos).

Tiempo en espera ( )

También referido como tiempo perdido. Del tiempo de respuesta total, cuánto tiempo está listo y esperando ejecutar. Desde la óptica de , desearíamos que

Proporción de penalización ( )

Fracción del tiempo de respuesta durante la cual estuvo en espera.

Proporción de respuesta ( )

Inverso de . Fracción del tiempo de respuesta durante la cual pudo ejecutarse.

Para referirnos a un grupo de procesos con requisitos similares, todos ellos requiriendo de un mismo tiempo , nos referiremos a , , y .

Además de estos tiempos, expresados en relación al tiempo efectivo de los diversos procesos del sistema, tenemos también:

Tiempo núcleo o kernel

Tiempo que pasa el sistema en espacio de núcleo, incluyendo el empleado en decidir e implementar la política de planificación y los cambios de contexto.

Tiempo desocupado (idle)

Tiempo en que la cola de procesos listos está vacía y no puede realizarse ningún trabajo.

Utilización del CPU

Porcentaje del tiempo en que el CPU está realizando trabajo útil. Si bien conceptualmente podemos ubicar dicha utilización entre 0 y 100%, en sistemas reales se ha observado (Silberschatz, p.179) que se ubica en un rango entre el 40 y el 90%.

Por ejemplo, si llegan a la cola de procesos listos:

Proceso

Ticks

Llegada

7

0

3

2

12

6

4

20

Si el tiempo que toma al sistema efectuar un cambio de contexto es de 2 ticks, y la duración de cada quantum es de 5 ticks, en un ordenamiento de ronda, tendríamos:

./img/ditaa/planificador.ditaa

Si consideráramos al tiempo ocupado por el núcleo como un proceso más, cuyo trabajo en este espacio de tiempo finalizó junto con los demás, tendríamos por resultado:

Proceso

Promedio útil

6.5

18.75

10.75

2.958

0.3383

Núcleo

14

40

26

4.0

0.25

Promedio total

8

23

13.8

2.875

0.347

Tomemos en cuenta que, para obtener , se parte del momento en que el proceso llegó a la cola, no el punto de inicio de nuestra línea de tiempo. Asumimos en este caso que el núcleo llega también en 0.

Respecto al patrón de llegada y salida de los procesos, lo manejaremos también basados en una proporción. Si tenemos una frecuencia de llegada promedio de nuevos procesos a la cola de procesos listos , y el tiempo de servicio requerido promedio , definimos el valor de saturación como .

Cuando , nunca llegan nuevos procesos, por lo cual nuestro sistema estará desocupado. Cuando , los procesos son despachados al mismo ritmo al que van llegando. Cuando , el ritmo de llegada de procesos es mayor que la velocidad a la cual la computadora puede darles servicio, con lo cual la cola de procesos listos tenderá a crecer (y la calidad de servicio, la proporción de respuesta , para cada proceso se decrementará).

# data[].attributes.attachment_link.title
Sistemas Operativos - Planificación de procesos

# data[].attributes.attachment_link.description
Para este tema, en vez de emplear unidades temporales formales (p.ej. fracciones de segundo), es común emplear quantums y ticks. Esto es en buena medida porque, si bien en el campo del cómputo las velocidades de acceso y uso efectivo cambian constantemente, los conceptos y las definiciones permanecen.

# data[].attributes.body
https://droidrant.com/which-scheduling-algorithm-is-used-in-windows-10-2/
round robin

# data[].attributes.attachment_link.title
Which Scheduling Algorithm is Used in Windows 10 2? [Answered 2023]- Droidrant

# data[].attributes.attachment_link.description
There are two types of scheduling algorithms used in Windows: preemptive and non-preemptive. Preemptive scheduling prioritizes the highest-priority thread, which is determined by the processor. This can be beneficial for systems with limited resources, because a higher-priority process will be execu…

# data[].attributes.body
https://medium.com/codex/exploring-windows-memory-management-virtual-memory-712fee0def31

# data[].attributes.attachment_link.title
Exploring Windows Memory Management — Virtual Memory

# data[].attributes.attachment_link.description
The basic idea behind virtual memory is that the combined size of the program, data, and stack may exceed the amount of physical memory…

# data[].attributes.body
https://learn.microsoft.com/es-es/windows-hardware/drivers/devtest/understanding-the-source-code-pane?ranMID=42431&ranEAID=mP6UMnc5Ozo&ranSiteID=mP6UMnc5Ozo-DAvVxe3uhxcjEwqld1P.Fw&epi=mP6UMnc5Ozo-DAvVxe3uhxcjEwqld1P.Fw&irgwc=1&OCID=AID2200057_aff_7803_1243925&tduid=(ir__n6iqqoyerkkfb0p623dtytm0222xewqlmm1joywq00)(7803)(1243925)(mP6UMnc5Ozo-DAvVxe3uhxcjEwqld1P.Fw)()&irclickid=_n6iqqoyerkkfb0p623dtytm0222xewqlmm1joywq00

# data[].attributes.attachment_link.readable_text
El panel Código fuente muestra todos los archivos de código fuente implicados en la detección de una infracción de regla, incluido el código del modelo del sistema operativo SDV (archivo sdv-harness.c), el código de regla de SDV (archivos *.slic) y el código fuente del controlador.

En la captura de pantalla siguiente se muestra un panel de código fuente de ejemplo.

A diferencia del panel Árbol de seguimiento, el panel Código fuente muestra todo el archivo (no solo los elementos de código ejecutados) y muestra cada archivo de origen en una pestaña independiente. Esta disposición facilita la determinación del origen de los elementos de código en el seguimiento. Los archivos de código fuente que no participan en la infracción de regla no aparecen en el panel Código fuente , incluso si están en el directorio de orígenes del controlador.

SDV coordina la presentación en el panel Código fuente con la presentación en el panel Árbol de seguimiento y el panel Estado. A medida que recorra los elementos de código fuente en el panel Árbol de seguimiento, SDV resalta automáticamente la línea de código en el panel Código fuente que contiene el elemento y muestra los valores de las variables en el punto correspondiente del panel Estado .

Del mismo modo, al seleccionar una línea de código ejecutado en el panel Código fuente, el resaltado del panel Árbol de seguimiento se mueve a los elementos de acción correspondientes desde esa línea de código. Dado que el panel Árbol de seguimiento muestra solo el código que se ejecuta en la ruta de acceso a la infracción de regla, al seleccionar una línea de código sin ejecutar en el panel Código fuente , el resaltado en el panel Árbol de seguimiento se mueve al nodo superior ( main).

El panel Código fuente es un componente del Visor de defectos.

# data[].attributes.attachment_link.keywords[]
panel código fuente wdk static driver verifier

# data[].attributes.attachment_link.title
Descripción del panel código fuente - Windows drivers

# data[].attributes.body
https://www3.uji.es/~redondo/so/capitulo4_IS11.pdf

# data[].attributes.body
https://www.termpaperwarehouse.com/essay-on/Windows-And-Linux-Memory-Management/185964
Least Recently Used

# data[].attributes.attachment_link.readable_text
Linux Memory Management:
Its similarities and difference with Windows' Memory Management specifically in
Page swapping algorithms

Abstract
Memory management in all the operating system is important because it is crucial for both programming and system administration. In order to make the system faster is that to use an algorithm that saves the time for managing processes and jobs. The article stated the brief discussion on how the Linux memory management works and thus it states that it works almost the same as what the Windows operating system with 32-bit and 64-bit is using. All i/o Linux goes through the page cache and area that caches to improve disk i/o performance same as with the one used in Windows' cache and Virtual Memory. The paper discussed the difference and similarities of Windows' memory management and Linux's Memory Management. It concludes that Linux's memory management is simpler and easier to maintain compared to Windows' though, thus Window's memory management favors the performance and Linux's having its operating system open sourced, needs improvement through some researches and open sourced programmers.

Keywords: Linux, Unix, Page Swapping, Windows, Memory, Virtual Memory, Paging, Placement Policy, Least Recently Used (LRU), Not Recently Used (NRU)

Linux Memory Management:
Its similarities and difference with Windows' Memory Management specifically in
Page swapping algorithms Operating systems is the heart of all computers may it be for personal use, schools and government use. It is the bridge from the end user to the hardware components of the system. It gives the end user the privilege to understand on how the computer works. Memory management is the most important part in the operating system, the faster the computer is the better. Understanding the memory management of the two operating systems namely Linux and Windows is important to be able to differentiate its purpose and thus give the end user knowledge on what is the better OS when it comes to memory.
Literature Review
In Charles D. Cranor and Gurudatta M. Parulkar (1999)'s article reviewing the virtual memory system, The Memory Management System is one of the important part of an operating system. Its function is to manage the memory hierarchy of RAM and hard disks. Its job include allocation and de-allocation of memory to processes of logistics, and the us of Virtual Memory by making use of hard disk as extra for RAM. The Memory system should be optimized, since the performance affects the performance and speed of the system. In C. Cranor. (1998)' article about the implementation of the uvm virtual memory system, For the virtual memory system to work, mapping functions is required that performs address translation, that converts virtual address to physical address. Virtual address is an address that the applications use to refer to a memory location, and physical address is an actual memory location transferred to the local memory bus. According to Flynn and Mchoes (2011), placement policy is of importance only for optimizing certain behavior. Behavior of a paging system is dependent only on the fetch and placement policy. For the fetch policy a demand paging system is used in which the system brings a page to memory only when needed. For page replacement policy, LRU is used in most of the windows' operating system.
Discussion
The Linux has been founded by Linux Torvalds. Windows and Linux memory management is similar in some aspects. Data structure and its features are similar. Some similarities of these systems are stated by E. G. Coffman and P. J. Denning (1998) - Hardware Abstraction Layer (HAL) which all of the OS have, that does the system-dependent work, and ables the rest of the kernel to be coded in platform independent. Copy-on-write: According to Dennig and Coffman when a page is to be shared, the system uses only one page with both processes sharing that same copy of the page. But, when one of the processes does a write into the page, a copy is made for that process, which it can then manipulated independently. Due to this characteristic it makes the system efficient. Background daemon: it is invoked periodically and performs tasks like page flushing, freeing unused memory. Shadow paging: A shadow object is created for an original object such that the shadow object has some of its pages modified from the original object, but shares the rest of the pages with the original object. Inter-Process Communication: The memory mapped files are allowed to be then shared between processes forming a method for inter-process communication. Memory mapped Files: A file can be mapped onto memory, can be used with memory read/write instructions.
Data structures used by Windows NT are in a tree form. Each node of the tree is called Virtual Address Descriptors (VAD). Each VAD denotes a range of address which has the same protection parameters and commit state information. It is balanced, which means that depth of the tree is short, which makes the search time shorter. The VAD marks each node as used, free, or reserved.
Linux has a virtual memory data structures as of UNIX. These are structures which represent continuous memory areas which have the same protection parameters. This list is searched whenever a page is to be found at a particular location. The structure records the range of address it is mapping into, protection mode, whether it is not page-able, and the direction it will be in. It records whether it is public or not. If the number of entries is greater than 32 then it is converted in to tree form from link list. Distribution of Process Address Space in Linux, usually 3GB is kept for the process and 1 GB given to the kernel, while in Windows; 2GB are kept for each. Page Replacement is important part in memory management. It is concerned with choosing which page swap out of the memory, whenever there is a need for more free memory. The Optimal Algorithm is the most ideal algorithm for page replacement it removes the page which will be required in the most distant future. It will decrease the number of page faults thus improve the system by minimizing swapping or read and write functions at the same time.
Up to Linux 2.2, the Linux Virtual Memory (VM) had focused on simplicity and low overhead. Hence it was rather quite primitive and had many problems, especially under heavy load. It was influenced by System V. However Riel has worked a lot on the Linux VM in the past couple of years, and improved it a lot for the Linux release. His discussion with Linux uses a demand paged system with no pre-paging. Until kernel version 2.2, Linux used NRU algorithm for page replacement, but due to the various shortcomings of the algorithm, they have changed it and implemented an approximate Least Recently Used in 2.4.The aging to effect LRU is brought about by increasing the age a counter associated with a page of to be referenced during a scan, and, decreased exponentially divided by 2 when found not to have been referenced according to Mathew Dillon and Rik Van Riel (2000)
Limitation
The limitation of this case study is to only compare the performance of the Linux OS with Windows OS regardless of the version but with only general information by its memory management. The topic discussed here is only concerned with the basic algorithm or concept used in improving each one's page swapping thus resulting to the efficiency of the operating system.
Conclusion
Linux and Windows are both modern when it comes to memory management, both of the uses the LRU algorithm in swapping or similar to LRU concept which is modified when it comes to higher versions of windows. Linux's memory management is simpler and easier to maintain compared to Windows' though, thus Window's memory management favors the performance and Linux's having its operating system open sourced, needs improvement through some researches and open sourced programmers. The develop Open Source Operating systems, which are maintained by a lot of hackers and programmers around the world, it will be expected that in the future, these operating systems will become better than the Windows operating systems.

# data[].attributes.attachment_link.description
Read this essay on Windows and Linux Memory Management. Come browse our large digital warehouse of free sample essays. Get the knowledge you need in order to pass your classes and more. Only at TermPaperWarehouse.com

# data[].attributes.body
https://es.slideshare.net/Eydonista/gestion-memoria-windows

https://www.monografias.com/trabajos104/gestion-memoria/gestion-memoria

# data[].attributes.attachment_link.description
Gestión de Memoria WINDOWS Integrantes: * Cristian Ospina Granados * John Alejandro Ospina G. Grupo # 1 Cómo gestiona Windows la memoria física y virtual Al e...

# data[].attributes.body
https://learn.microsoft.com/en-us/sysinternals/downloads/rammap
RAMMap is an advanced physical memory usage analysis utility for Windows Vista and higher. It presents usage information in different ways on its several different tabs:

Use Counts: usage summary by type and paging list

Processes: process working set sizes

Priority Summary: prioritized standby list sizes

Physical Pages: per-page use for all physical memory

Physical Ranges: physical memory addresses

File Summary: file data in RAM by file

File Details: individual physical pages by file

# data[].attributes.attachment_link.readable_text
Published: May 11, 2022

Download RAMMap (671 KB)
Run now from Sysinternals Live.

Have you ever wondered exactly how Windows is assigning physical memory, how much file data is cached in RAM, or how much RAM is used by the kernel and device drivers? RAMMap makes answering those questions easy. RAMMap is an advanced physical memory usage analysis utility for Windows Vista and higher. It presents usage information in different ways on its several different tabs:

Use Counts: usage summary by type and paging list

Processes: process working set sizes

Priority Summary: prioritized standby list sizes

Physical Pages: per-page use for all physical memory

Physical Ranges: physical memory addresses

File Summary: file data in RAM by file

File Details: individual physical pages by file

Use RAMMap to gain understanding of the way Windows manages memory, to analyze application memory usage, or to answer specific questions about how RAM is being allocated. RAMMap's refresh feature enables you to update the display and it includes support for saving and loading memory snapshots.

For definitions of the labels RAMMap uses as well as to learn about the physical-memory allocation algorithms used by the Windows memory manager, please see Windows Internals, 5^th^ Edition.

Windows Internals Book The official updates and errata page for the definitive book on Windows internals, by Mark Russinovich and David Solomon.

Windows Sysinternals Administrator's ReferenceThe official guide to the Sysinternals utilities by Mark Russinovich and Aaron Margosis, including descriptions of all the tools, their features, how to use them for troubleshooting, and example real-world cases of their use.

Download RAMMap (671 KB)

Run now from Sysinternals Live.
Runs on:

Client: Windows Vista and higher.

Server: Windows Server 2008 and higher.

Learn More

Defrag Tools: #6 - RAMMap
In this episode of Defrag Tools, Andrew Richards and Larry Larsen cover using RAMMap to see how RAM is being used and tell if there has been any memory pressure.

# data[].attributes.attachment_link.description
An advanced physical memory usage analysis utility that presents usage information in different ways on its several different tabs.

# data[].attributes.attachment_link.readable_text
The memory management in the operating system is to control or maintain the main memory and transfer processes from the primary memory to disk during execution. Memory management keeps track of all memory locations, whether the process uses them or not. Determines how much memory should be allocated to each process. Specifies how much memory each process should be given. It decides which processes will be remembered and when. It tracks when memory is released or when it is shared and changes the status accordingly.

Windows Memory Management

Microsoft Windows has its own virtual address space for each 32-bit process, allowing up to 4 gigabytes of memory to be viewed. Each process has 8-terabyte address space on 64-bit Windows. All threads have access to the visible address space of the process. Threads, on the other hand, do not have access to the memory of another process, which protects one process from being damaged by another.

Architecture for 32-bit Windows: The automatic configuration of the 32-bit Windows Operating System (OS) allocates 4 GB (232) of accessible memory space to the kernel and user programs equally. With 4 GB physical memory available, the kernel will receive 2 GB and the app memory will receive 2 GB. Kernel-mode address space is shared by all processes, but application mode access space is provided for each user process.

Architecture for 64-bit Windows: The automatic configuration of the 64-bit Windows Operating System (OS) allocates up to 16 TB (254) of accessible memory space to the kernel and user programs equally. As 16 TB real memory is available, the kernel will have 8 TB of virtual address (VA) space and user application memory will have 8 TB of VA space. Visible address space in the kernel is allocated for all processes. Each 64-bit functionality gets its place, but each 32-bit system works on a 2 GB (Windows) virtual machine.

Virtual Address Space

The process' visible address space is the range of memory addresses that you can use. The address area of ​​each process is private, and can only be accessed through other processes if it is shared.

A virtual address does not reflect the actual location of an object in memory; instead, the system stores a table for each process, which is an internal data structure that converts visible addresses into local addresses. The program converts the virtual address into a local address every time the chain refers to it.

The virtual address area of Windows is divided into two parts: one for process use and the other for system usage.

Virtual Memory Functions

A process can alter or determine the state of pages in its virtual address space using virtual memory functions.

The width of the visible address space is reserved for the process. Although saving address space does not provide material storage, it prevents scope from using other sharing processes. It does not affect other active address spaces for other processes. Page storage reduces unnecessary use of virtual storage while allowing the process of setting aside part of its address space for the flexible data structure. As required, the procedure can provide a physical repository for this area.

Provide a set of cached pages in the address of the process so that only a shared process can access real storage (either RAM or disk).

For the most dedicated pages, specify read/write, read-only, or no access. This differs from the general distribution procedures, which often provide read/write access to the pages.

Release a set of saved pages, making the visible address set accessible for the following call process sharing actions.

We can withdraw a group of committed pages, freeing up portable storage that can be assigned to any process in the future.

To prevent the program from changing pages in the file, lock one or more memory pages bound to the virtual memory (RAM). Find information about a set of pages in a call process or the address space of a specific process. It may change the access protection of a set of pages bound to the physical address of the call process.

Heap Functions

The system provides a default heap for each process. Private heaps can help applications that make frequent allocations from the heap perform better. A private heap is a block of one or more pages in the caller process's address space. After constructing the private heap, the process manages the memory in it via operations like HeapAlloc and HeapFree.

File Mapping

The association of file content with a piece of visible address space in the process is known as a file map. To track this relationship, the system creates a file map maker (also known as a category object). File view is the physical address area are used for the file content access process. The process may use both input and outgoing sequences (I/O) thanks to the file map. It also allows the process to work effectively with large data files, such as websites, without requiring the entire file to be mapped to memory. Files with a memory map can be used with many processes to exchange data.

# data[].attributes.attachment_link.title
Windows Memory Management - GeeksforGeeks

# data[].attributes.attachment_link.description
The memory management in the operating system is to control or maintain the main memory and transfer processes from the primary memory to disk during execution. Memory management keeps track of all memory locations, whether the process uses them or not. Determines how much memory should be allocated to each process.

# data[].attributes.body
https://learn.microsoft.com/es-es/dotnet/standard/automatic-memory-management

# data[].attributes.attachment_link.readable_text
La administración de memoria automática es uno de los servicios que proporciona Common Language Runtime durante la ejecución administrada. El recolector de elementos no utilizados de Common Language Runtime administra la asignación y liberación de la memoria de una aplicación. Esto significa que los programadores no tienen que escribir código para realizar tareas de administración de memoria al programar aplicaciones administradas. La administración automática de la memoria puede eliminar problemas frecuentes, como olvidar liberar un objeto y causar una pérdida de memoria, o intentar tener acceso a la memoria de un objeto que ya se ha liberado. En esta sección se describe cómo asigna y libera memoria el recolector de elementos no utilizados.

Asignar memoria

Cuando se inicializa un nuevo proceso, el motor en tiempo de ejecución reserva una región contigua de espacio de direcciones para el proceso. Este espacio de direcciones reservado se denomina montón administrado. El montón administrado mantiene un puntero a la dirección a la que se asignará el siguiente objeto del montón. Inicialmente, este puntero se establece en la dirección base del montón administrado. Todos los tipos de referencia se asignan en el montón administrado. Cuando una aplicación crea el primer tipo de referencia, se le asigna memoria en la dirección base del montón administrado. Cuando la aplicación crea el siguiente objeto, el recolector de elementos no utilizados le asigna memoria en el espacio de direcciones que sigue inmediatamente al primer objeto. Siempre que haya espacio de direcciones disponible, el recolector de elementos no utilizados continúa asignando espacio a los objetos nuevos de este modo.

La asignación de memoria desde el montón administrado es más rápida que la asignación de memoria no administrada. Como el tiempo de ejecución asigna memoria a los objetos agregando un valor a un puntero, este método es casi tan rápido como la asignación de memoria desde la pila. Además, puesto que los nuevos objetos que se asignan consecutivamente se almacenan uno junto a otro en el montón administrado, la aplicación puede tener un acceso muy rápido a los objetos.

Liberar memoria

El motor de optimización del recolector de elementos no utilizados determina cuál es el mejor momento para realizar una recolección basándose en las asignaciones realizadas. Cuando el recolector de elementos no utilizados lleva a cabo una recolección, libera la memoria de los objetos que ya no usa la aplicación. Determina qué objetos ya no se usan examinando las raíces de la aplicación. Todas las aplicaciones tienen un conjunto de raíces. Cada raíz hace referencia a un objeto del montón administrado, o bien se establece en null. Las raíces de una aplicación incluyen campos estáticos, variables locales y parámetros de pila de un subproceso y registros de la CPU. El recolector de elementos no utilizados tiene acceso a la lista de raíces activas que el compilador Just-In-Time (JIT) y el runtime mantienen. Con esta lista examina las raíces de la aplicación y, durante este proceso, crea un gráfico que contiene todos los objetos que no se pueden alcanzar desde las raíces.

Los objetos que no están en el gráfico no se pueden alcanzar desde las raíces de la aplicación. El recolector de elementos no utilizados considera elementos no utilizados a los objetos inalcanzables y libera la memoria que tienen asignada. Durante una recolección, el recolector de elementos no utilizados examina el montón administrado y busca los bloques de espacio de direcciones que ocupan los objetos que no se pueden alcanzar. Cuando detecta cada uno de los objetos inalcanzables, usa una función de copia de memoria para compactar los objetos alcanzables en la memoria y libera los bloques de espacios de direcciones asignados a los objetos no alcanzables. Una vez que se ha compactado la memoria de los objetos alcanzables, el recolector de elementos no utilizados hace las correcciones de puntero necesarias para que las raíces de la aplicación señalen a los objetos en sus nuevas ubicaciones. También sitúa el puntero del montón administrado después del último objeto alcanzable. Tenga en cuenta que la memoria sólo se compacta si, durante una recolección, se detecta un número significativo de objetos inalcanzables. Si todos los objetos del montón administrado sobreviven a una recolección, no hay necesidad de comprimir la memoria.

Para mejorar el rendimiento, el tiempo de ejecución asigna memoria a los objetos grandes en un montón aparte. El recolector de elementos no utilizados libera la memoria para los objetos grandes automáticamente. Sin embargo, para no mover objetos grandes en la memoria, dicha memoria no se compacta.

Generaciones y rendimiento

Para optimizar el rendimiento del recolector de elementos no utilizados, el montón administrado se divide en tres generaciones: 0, 1 y 2. El algoritmo de recolección de elementos no utilizados del runtime se basa en diversas generalizaciones que la industria de software informático ha detectado como ciertas al experimentar con esquemas de recolección de elementos no utilizados. Primero, es más rápido compactar la memoria de una parte del montón administrado que la de todo el montón. En segundo lugar, los objetos más recientes tienen una duración más corta y los objetos antiguos tienen una duración más larga. Por último, los objetos más recientes suelen estar relacionados unos con otros y la aplicación tiene acceso a ellos más o menos al mismo tiempo.

El recolector de elementos no utilizados del runtime almacena los nuevos objetos en la generación 0. Los objetos creados en las primeras etapas de la duración de la aplicación y que sobreviven a las recolecciones se promueven y se almacenan en las generaciones 1 y 2. El proceso de promoción de objetos se describe más adelante en este tema. Como es más rápido compactar una parte del montón administrado que todo el montón, este esquema permite que el recolector de elementos no utilizados libere la memoria en una generación específica en lugar de liberarla para todo el montón administrado cada vez que realiza una recolección.

En realidad, el recolector de elementos no utilizados realiza una recolección cuando se llena la generación 0. Si una aplicación trata de crear un nuevo objeto cuando la generación 0 está llena, el recolector de elementos no utilizados detecta que no queda espacio de direcciones en la generación 0 para asignárselo. El recolector de elementos no utilizados realiza una recolección, en un intento de liberar espacio de direcciones para el objeto en la generación 0. Primero examina los objetos de la generación 0 y no todos los objetos del montón administrado. Éste es un enfoque más eficaz, ya que los objetos nuevos suelen tener una duración más corta y se espera que la aplicación no utilice muchos de los objetos de la generación 0 cuando se realice una recolección. Además, una recolección de tan sólo la generación 0 a menudo recupera suficiente memoria para que la aplicación pueda continuar creando nuevos objetos.

Una vez que el recolector de elementos no utilizados realiza una recolección de la generación 0, compacta la memoria de los objetos que se pueden alcanzar como se ha explicado antes en este tema, en Liberar memoria. A continuación, el recolector de elementos no utilizados promueve estos objetos y considera que esta parte del montón administrado está en la generación 1. Dado que los objetos que sobreviven a las recolecciones suelen tener una duración más larga, es lógico promoverlos a una generación superior. En consecuencia, el recolector de elementos no utilizados no tiene que volver a examinar los objetos de las generaciones 1 y 2 cada vez que realiza una recolección en la generación 0.

Una vez que el recolector de elementos no utilizados realiza su primera recolección de la generación 0 y promueve los objetos que se pueden alcanzar a la generación 1, considera que lo que queda del montón administrado forma parte de la generación 0. Continúa asignando memoria a los nuevos objetos de la generación 0 hasta que la generación 0 está completa y es necesario realizar otra recolección. En este momento, el motor de optimización del recolector de elementos no utilizados determina si es necesario examinar los objetos de generaciones más antiguas. Por ejemplo, si una recolección de la generación 0 no recupera memoria suficiente para que la aplicación pueda completar correctamente su intento de crear un nuevo objeto, el recolector de elementos no utilizados puede realizar una recolección de la generación 1 y, a continuación, de la generación 2. Si con ello no recupera suficiente memoria, el recolector de elementos no utilizados puede realizar una recolección de las generaciones 2, 1 y 0. Después de cada recolección, el recolector de elementos no utilizados compacta los objetos que puede alcanzar en la generación 0 y los promueve a la generación 1. Los objetos de la generación 1 que sobreviven a las recolecciones se promueven a la generación 2. Como el recolector de elementos no utilizados solo admite tres generaciones, los objetos de la generación 2 que sobreviven a una recolección se mantienen en esta generación hasta que en una recolección posterior se determina que no se pueden alcanzar.

Liberar memoria para recursos no administrados

En el caso de la mayoría de los objetos creados por la aplicación, puede utilizar el recolector de elementos no utilizados para realizar automáticamente las tareas de administración de memoria. Sin embargo, los recursos no administrados requieren una limpieza explícita. El tipo más habitual de recurso no administrado es un objeto que contiene un recurso del sistema operativo, como un identificador de archivo, identificador de ventana o conexión de red. Aunque el recolector de elementos no utilizados puede realizar el seguimiento del período de duración de un objeto administrado que encapsula un recurso no administrado, no tiene un conocimiento específico de cómo limpiar el recurso. Cuando se crea un objeto que encapsula un recurso no administrado, es recomendable proporcionar el código necesario para limpiar dicho recurso en un método público Dispose. Si se proporciona un método Dispose, se permite que los usuarios del objeto liberen su memoria de manera explícita cuando hayan terminado de usarlo. Si se utiliza un objeto que encapsula un recurso no administrado, se debe conocer la existencia de Dispose y llamarlo cuando sea necesario. Para más información sobre la limpieza de recursos no administrados y el ejemplo de un modelo de diseño para implementar Dispose, consulte Recolección de elementos no utilizados.

Vea también

# data[].attributes.attachment_link.description
Más información acerca de: Automatic Memory Management

# data[].attributes.body
https://www.geeksforgeeks.org/windows-memory-managment/

# data[].attributes.attachment_link.readable_text
The memory management in the operating system is to control or maintain the main memory and transfer processes from the primary memory to disk during execution. Memory management keeps track of all memory locations, whether the process uses them or not. Determines how much memory should be allocated to each process. Specifies how much memory each process should be given. It decides which processes will be remembered and when. It tracks when memory is released or when it is shared and changes the status accordingly.

Windows Memory Management

Microsoft Windows has its own virtual address space for each 32-bit process, allowing up to 4 gigabytes of memory to be viewed. Each process has 8-terabyte address space on 64-bit Windows. All threads have access to the visible address space of the process. Threads, on the other hand, do not have access to the memory of another process, which protects one process from being damaged by another.

Architecture for 32-bit Windows: The automatic configuration of the 32-bit Windows Operating System (OS) allocates 4 GB (232) of accessible memory space to the kernel and user programs equally. With 4 GB physical memory available, the kernel will receive 2 GB and the app memory will receive 2 GB. Kernel-mode address space is shared by all processes, but application mode access space is provided for each user process.

Architecture for 64-bit Windows: The automatic configuration of the 64-bit Windows Operating System (OS) allocates up to 16 TB (254) of accessible memory space to the kernel and user programs equally. As 16 TB real memory is available, the kernel will have 8 TB of virtual address (VA) space and user application memory will have 8 TB of VA space. Visible address space in the kernel is allocated for all processes. Each 64-bit functionality gets its place, but each 32-bit system works on a 2 GB (Windows) virtual machine.

Virtual Address Space

The process' visible address space is the range of memory addresses that you can use. The address area of ​​each process is private, and can only be accessed through other processes if it is shared.

A virtual address does not reflect the actual location of an object in memory; instead, the system stores a table for each process, which is an internal data structure that converts visible addresses into local addresses. The program converts the virtual address into a local address every time the chain refers to it.

The virtual address area of Windows is divided into two parts: one for process use and the other for system usage.

Virtual Memory Functions

A process can alter or determine the state of pages in its virtual address space using virtual memory functions.

The width of the visible address space is reserved for the process. Although saving address space does not provide material storage, it prevents scope from using other sharing processes. It does not affect other active address spaces for other processes. Page storage reduces unnecessary use of virtual storage while allowing the process of setting aside part of its address space for the flexible data structure. As required, the procedure can provide a physical repository for this area.

Provide a set of cached pages in the address of the process so that only a shared process can access real storage (either RAM or disk).

For the most dedicated pages, specify read/write, read-only, or no access. This differs from the general distribution procedures, which often provide read/write access to the pages.

Release a set of saved pages, making the visible address set accessible for the following call process sharing actions.

We can withdraw a group of committed pages, freeing up portable storage that can be assigned to any process in the future.

To prevent the program from changing pages in the file, lock one or more memory pages bound to the virtual memory (RAM). Find information about a set of pages in a call process or the address space of a specific process. It may change the access protection of a set of pages bound to the physical address of the call process.

Heap Functions

The system provides a default heap for each process. Private heaps can help applications that make frequent allocations from the heap perform better. A private heap is a block of one or more pages in the caller process's address space. After constructing the private heap, the process manages the memory in it via operations like HeapAlloc and HeapFree.

File Mapping

The association of file content with a piece of visible address space in the process is known as a file map. To track this relationship, the system creates a file map maker (also known as a category object). File view is the physical address area are used for the file content access process. The process may use both input and outgoing sequences (I/O) thanks to the file map. It also allows the process to work effectively with large data files, such as websites, without requiring the entire file to be mapped to memory. Files with a memory map can be used with many processes to exchange data.

# data[].attributes.attachment_link.title
Windows Memory Management - GeeksforGeeks

# data[].attributes.attachment_link.description
The memory management in the operating system is to control or maintain the main memory and transfer processes from the primary memory to disk during execution. Memory management keeps track of all memory locations, whether the process uses them or not. Determines how much memory should be allocated to each process.

# data[].attributes.body
https://doc.lagout.org/security/Windows%20Internals.pdf
Libro de Windows donde detalla su arquitectura y núcleos internos. Capítulo 10 - Pag. +187

# data[].attributes.body
https://andreafortuna.org/2019/03/13/some-thoughts-about-windows-memory-management/#:~:text=The%20Window%20Memory%20management&text=Memory%20is%20managed%20in%20pages,user%20space%20and%20system%20space.

# data[].attributes.attachment_link.readable_text
Malware analysis and digital forensic analysis are processes that often needs the analyst to look into system memory.
In this regard, a good analyst must have at least a base knowledge of Windows Memory Managemen t.

In this post I will try to explain mechanisms used to map executable modules into the address space and the most exploitation techniques.

Some fundamentals

Just some basic information, necessary to understand the remainder of this article

The paging

Paging is a memory management scheme by which a computer stores and retrieves data from secondary storage for use in main memory, used for to realize virtual address spaces and abstract from their physical memory.

https://www.youtube.com/watch?v=0Rf5Jc61ArM

The virtual memory is divided into equal sized pages and the physical memory into frames of the same size, and each page can be mapped to a frame.
Pages that are currently not mapped are temporarily stored on secondary storage (e.g. in a pagefile on the hard disk): when needed, the os retrieves the frame mapped to the physical page from the secondary storage.

The mapping between virtual and physical addresses normally is done transparently to the running applications by the memory management unit (MMU), which is a dedicated part of the CPU.
Under particular conditions, the hardware cannot be able to resolve the mapping without the help of the OS: in this case, a page fault error is raised and it will handled by the page fault handler of the OS.

For managing the paging mechanism, the Memory Management Unit use specifc data structures, the page tables: address spaces of different processes are isolated from each other so each process uses its own instances of these structures.

Each page table entry ( PTE) describes the memory range of one associated page and in order to locate the PTE which is associated to a particular memory address, it is splitted into two parts: the upper bits are an index into the page table, and the lower bits are used as offset to the start address of the relating frame.

The TLB (Translation Lookaside Buffer)

General working of TLB (from Wikipedia)

A translation lookaside buffer is a memory cache used to reduce the time necessary to access a memory location.
Part of the MMU, the TLB stores the recent translations from virtual memory to physical memory and may reside between the CPU and the CPU cache, between CPU cache and the main memory or between the different levels of the multi-level cache.

Sometimes there are distinct TLBs for data and instruction addresses, the x86 architecture offers a DTLB for the former and an ITLB for the latter one.
Normally the DTLB and ITLB are synchronized, but there are cases in which they are enforced to become unsynchronized, for example to start packed applications or to realize memory cloaking, a technique wich use memory dependence prediction to speculatively identify dependent loads and stores it early in the pipeline.

The Window Memory management

Windows has both physical and virtual memory. Memory is managed in pages, with processes demanding it as necessary. Memory pages are 4KB in size (both for physical and virtual memory).

On 32-bit (x86) architectures, the total addressable memory is 4GB, divided equally into user space and system space.
Pages in system space can only be accessed from kernel mode; user-mode processes (application code) can only access data that is appropriately marked in user mode.
There is one single 2GB system space that is mapped into the address space for all processes; each process also has its own 2GB user space.

With a 64-bit architecture, the total address space is theoretically 16 exabyte (10 ¹⁸ bytes, 1 million terabytes), but for a variety of software and hardware architectural reasons, 64-bit Windows only supports 16TB today, split equally between user and system space.

Virtual Memory

Within a process, virtual memory is broken into three categories:

private virtual memory: that which is not shared, such as the process heap

shareable: memory mapped files

free: memory with an as yet undefined use.

Private and shareable memory can also be flagged in two ways: reserved (a thread has plans to use this range but it isn't available yet), and committed (available to use).

Memory exploitation techniques

So, now let's look the most known memory protection technique, and how attackers can try to avoid them.

No eXecute

The most used technique is called No eXecute (NX), first introduced under with OpenBSD 3.3 in May 2003.

The aim of this technique is to enforce the distinction between data and code memory: initially there was no differentiation between code and data, so each byte in memory can either be used as code, if its address is loaded into the instruction pointer, or it can be used as data if it is accessed by a load or store operation.

An unwanted side effect of this is that attackers are able to conceal malicious code as harmless data and then later on, with the help of some vulnerability, execute it as code.

The NX protection is implemented by hardware on contemporary CPU but can be also simulated in software (usually named DEP - Data Execution Prevention on Windows systems).

On newer x86/x64 machines there is one dedicated PTE flag that controls if a certain page is executable or not.
If this flag is set, a page fault is invoked on the attempt to execute code from the corresponding page.
Therefore, besides the hardware, also the operating system has to implement this security feature as well.

In order to overcome the NX protection, attackers use different methods.
One very powerful way is to locate and execute useful instructions in one of the loaded system or application library modules: for example in Return Oriented Programming ( ROP) attackers do not call complete library functions, but instead they use only small code chunks are already present in the machine's memory and chain those together to implement their desired functionality.

This instruction sequences are called "gadgets".
Each gadget typically ends in a return instruction and is located in a subroutine within the existing program and/or shared library code.

Chained together, these gadgets allow an attacker to perform arbitrary operations on a machine.

Address Space Layout Randomization

Address Space Layout Randomization ( ASLR) is mechanism that makes all memory locations no longer fixed and predictable, but chosen randomly.
Consequently, the stack, the heap and the loaded modules will have different memory addresses each time a process is started making much harder for attackers to find usable memory locations, such as the beginning of a certain function or the effective location of malicious code or data.

Accordingly, when the memory layout is randomized and an exploit is performed that does not take this into account, the process will rather crash than being exploited.

One possible attack approach is to locate and utilize non-randomized memory, since early implementations of ASLR do not randomize the complete memory but only some parts of it.
Furthermore, Windows allows the disabling of ASLR on a per-module-base: so, even if all Windows libraries are ASLR-protected, a lot of custom libraries are not and constitute an easy exploitation target for attackers.
For example in the old CVE-2010-3971 the protection could be bypassed using the IE DLL mscorie.dll, that was distributed with ASLR disabled.

Further readings

# data[].attributes.attachment_link.title
Some thoughts about Windows Memory Management

# data[].attributes.attachment_link.description
Malware analysis and digital forensic analysis are processes that often needs the analyst to look into system memory.In this regard, a good analyst must have at least a base knowledge of Windows Memory Management. In this post I will try to explain mechanisms used to map executable modules into the address space and the most exploitation techniques.

# data[].attributes.body
https://ivanlopezjorda.wordpress.com/2015/10/05/planificacion-de-procesos-windows-y-linux/

Windows utiliza principalmente el algoritmo de planificación de procesos Round Robin, que es también utilizado por otros sistemas operativos.

# data[].attributes.attachment_link.readable_text
Síntomas

Experimenta problemas de rendimiento en aplicaciones y servicios en varias versiones de Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 y Windows Server 2008 R2. Además, observa los siguientes síntomas:

La memoria disponible es casi casi todo lo que hace.

La caché de archivos del sistema consume la mayor parte de la RAM física.

Hay un volumen continuo y alto de solicitudes de lectura en caché en el disco duro.

Causa

La administración de memoria en los sistemas operativos Microsoft Windows usa un algoritmo basado en demanda. Si un proceso solicita y usa una gran cantidad de memoria, aumenta el tamaño del conjunto de trabajo (el número de páginas de memoria en la RAM física) del proceso. Si estas solicitudes son continuas y no están desactivadas, el conjunto de trabajo del proceso crecerá para consumir toda la RAM física. En esta situación, los conjuntos de trabajo de todos los demás procesos se paginan en el disco duro. Este comportamiento disminuye el rendimiento de aplicaciones y servicios porque las páginas de memoria se escriben continuamente en el disco duro y se leen desde el disco duro.

Este comportamiento también se aplica al conjunto de trabajo de la caché de archivos del sistema. Si hay un volumen continuo y alto de solicitudes de lectura en caché desde cualquier proceso o desde cualquier controlador, el tamaño del conjunto de trabajo de la caché de archivos del sistema crecerá para satisfacer esta demanda. La caché de archivos del sistema usa la RAM física. Por lo tanto, cantidades suficientes de RAM física no están disponibles para otros procesos.

En las versiones de 32 bits de los sistemas operativos Microsoft Windows anteriores a Windows Vista, los conjuntos de trabajo de la caché de archivos del sistema tienen un límite de memoria operativa de menos de 1 gigabyte (GB). La limitación del intervalo de direcciones virtuales impide que los conjuntos de trabajo de la memoria caché de archivos del sistema agoten la RAM física.

En las versiones de 32 bits de los sistemas operativos Windows Vista, los recursos del kernel se asignan dinámicamente. El conjunto de trabajo de la caché de archivos del sistema aumenta para consumir el rango de direcciones virtuales del modo kernel, a costa de otros recursos del kernel. La limitación de este rango de memoria es inferior a 2 GB. Si el equipo tiene más de 2 GB de RAM física, la memoria caché no puede agotar toda la RAM física. Sin embargo, la memoria caché puede agotar el espacio de direcciones virtual en el kernel. Esto puede provocar errores de asignación para otros componentes del kernel.

En las versiones de 64 bits de los sistemas operativos Windows, el tamaño del rango de direcciones virtuales suele ser mayor que la RAM física. En esta situación, el trabajo establecido para la caché de archivos del sistema puede aumentar para consumir la mayor parte de la RAM física.

Resolución

Los algoritmos de administración de memoria de los sistemas operativos Windows 7 y Windows Server 2008 R2 se actualizaron para solucionar muchos problemas de almacenamiento en caché de archivos encontrados en versiones anteriores de Windows. Solo hay situaciones únicas en las que tiene que implementar este servicio en equipos que ejecutan Windows 7 o Windows Server 2008 R2.

Cómo determinar si el sistema se ve afectado

Para determinar si este problema afecta al sistema, instale la herramienta SysInternals RamMap. Puede obtener la herramienta en el siguiente sitio web de Windows Sysinternals:

http://technet.microsoft.com/en-us/sysinternals/ff700229
Cuando ejecute la herramienta, seleccione la opción Usar recuentos. Muestra varias columnas que muestran el patrón actual de uso de memoria. Haga clic en la columna Activa para ordenar por el número de bytes usados y observe el uso superior directamente en el total.

Si el recuento de uso más alto es "Metarchivo" y se usa una gran parte de la memoria disponible, experimenta el problema de caché de archivos de sistema que se describe en la sección "Síntomas". Puede comprobarlo usando el Monitor de rendimiento para supervisar el contador Memory\System Cache Resident Bytes y ver que la caché crece continuamente con el tiempo.

Figura 1. Ejemplo de salida RamMap en el que el equipo está experimentando el problema.

Figura 2. Ejemplo de salida RamMap en el que el equipo no está experimentando el problema.

Si el contador Memory\System Cache Resident Bytes del Monitor de rendimiento muestra una tendencia ascendente a lo largo del tiempo, el equipo está experimentando el problema, como se muestra en la figura 3.

Figura 3. Ejemplo de resultado del Monitor de rendimiento en el que el equipo experimenta el problema a lo largo del tiempo.

Reiniciar requisitos

No es necesario reiniciar el equipo al instalar, desinstalar o usar este servicio.

Si está leyendo este artículo porque está trabajando con un cliente que cree que se ve afectado por este problema, siga estos pasos para ayudar a resolver el problema.

1. Compruebe que los datos de ramMap, perfmon o poolmon del cliente confirman que la caché de archivos de sistema está consumiendo la mayor parte de la RAM física, como se ha descrito anteriormente.

2. Para obtener el Servicio de caché dinámica de Windows, descárquelo aquí.

3. Algunas configuraciones del Registro de caché dinámica son las siguientes:

Servidores de archivos, es posible que quiera probar 1 GB.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:00000400
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064

Exchange 2007, es posible que desee probar 500 MB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000001F4
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064

SQL 2005 y posteriores, en el pasado, al trabajar con SQL EE, usaron 2 GB:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:000007D0
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064

Más información

Para evitar este problema, use la función DE API GetSystemFileCacheSize y la función API SetSystemFileCacheSize para establecer el valor de tamaño máximo o mínimo para los conjuntos de trabajo de la caché de archivos del sistema. El uso de estas funciones es el único método admitido para restringir el consumo de memoria física en la caché de archivos del sistema.

El servicio de caché dinámica de Microsoft Windows es un servicio de ejemplo que demuestra una estrategia para usar estas API para minimizar los efectos de este problema.

La instalación y el uso del Servicio de caché dinámica de Microsoft no excluye el soporte técnico de Microsoft Windows. Este servicio y su código fuente se proporcionan como ejemplo de cómo usar las API compatibles con Microsoft para reducir el crecimiento de la caché del sistema de archivos.

Puede obtener el servicio y el código fuente desde el siguiente sitio web de Microsoft:

http://www.microsoft.com/download/details.aspx?FamilyID=e24ade0a-5efe-43c8-b9c3-5d0ecb2f39af&displaylang=es

Recursos adicionales

Lea los capítulos 9 (Administración de memoria) y 10 (Administrador de caché) de Windows Internals, la quinta edición.

Entrada de blog ADMINISTRACIÓN DE MEMORIA (PROBLEMAS GRANDES DE CACHÉ DEL SISTEMA)

Entrada de blog Problemas de copia grande lenta de archivos

Límites de memoria para las versiones de

Windows 976618 Experimenta problemas de rendimiento en aplicaciones y servicios cuando la caché de archivos del sistema usa la mayor parte de la RAM física 918483 Cómo reducir la paginación de memoria del grupo de búferes en la versión de 64 bits de SQL Server 895932 Aspectos que debe tener en cuenta antes de habilitar el modo de caché del sistema en Windows XP 232271 Cómo optimizar Windows NT Server mediante el Registro 837331 Acerca del Administrador de caché en

Windows

Server 2003

http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx

LargeSystemCache Topic

RamMap Blog Post

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".

# data[].attributes.attachment_link.title
Experimenta problemas de rendimiento en aplicaciones y servicios cuando la caché de archivos del sistema consume la mayor parte de la RAM física

# data[].attributes.attachment_link.description
Corrige un problema en el que las aplicaciones y los servicios de varias versiones de Windows XP, de Windows Vista, de Windows Server 2003 y de Windows Server 2008 tienen problemas de rendimiento.

# data[].attributes.body
https://learn.microsoft.com/es-es/windows/win32/memory/global-and-local-functions

# data[].attributes.attachment_link.readable_text
A continuación se muestra una breve comparación de los distintos métodos de asignación de memoria:

Aunque las funciones GlobalAlloc, LocalAlloc y HeapAlloc asignan en última instancia memoria del mismo montón, cada una proporciona un conjunto ligeramente diferente de funcionalidad. Por ejemplo, se puede indicar a HeapAlloc que genere una excepción si no se pudo asignar memoria, una funcionalidad que no está disponible con LocalAlloc. LocalAlloc admite la asignación de identificadores que permiten mover la memoria subyacente mediante una reasignación sin cambiar el valor de identificador, una funcionalidad no disponible con HeapAlloc.

A partir de Windows de 32 bits, GlobalAlloc y LocalAlloc se implementan como funciones contenedoras que llaman a HeapAlloc mediante un identificador para el montón predeterminado del proceso. Por lo tanto, GlobalAlloc y LocalAlloc tienen una sobrecarga mayor que HeapAlloc.

Dado que los diferentes asignadores de montón proporcionan una funcionalidad distintiva mediante diferentes mecanismos, debe liberar memoria con la función correcta. Por ejemplo, la memoria asignada con HeapAlloc debe liberarse con HeapFree y no LocalFree o GlobalFree. La memoria asignada con GlobalAlloc o LocalAlloc debe consultarse, validarse y liberarse con la función global o local correspondiente.

La función VirtualAlloc permite especificar opciones adicionales para la asignación de memoria. Sin embargo, sus asignaciones usan una granularidad de página, por lo que el uso de VirtualAlloc puede dar lugar a un mayor uso de memoria.

La función malloc tiene la desventaja de depender del tiempo de ejecución. El nuevo operador tiene la desventaja de ser dependiente del compilador y dependiente del lenguaje.

La función CoTaskMemAlloc tiene la ventaja de funcionar bien en C, C++o Visual Basic. También es la única manera de compartir memoria en una aplicación basada en COM, ya que MIDL usa CoTaskMemAlloc y CoTaskMemFree para serializar la memoria.

Ejemplos

# data[].attributes.attachment_link.title
Comparación de métodos de asignación de memoria - Win32 apps

# data[].attributes.attachment_link.description
A continuación se muestra una breve comparación de los distintos métodos de asignación de memoria.

# data[].attributes.body
https://www.techtarget.com/searchenterprisedesktop/tip/Understand-and-manage-Windows-10-virtual-memory

https://view.officeapps.live.com/op/view.aspx?src=https%3A%2F%2Fsourcelens.com.au%2FConsulting%2FBrw%2FRu%2FSourceLens%2FSlides%2FWindowsProgramming_Degree1%2FMemoryManagement%2F0Windows%2520Memory%2520Management%2520Part1.pptx&wdOrigin=BROWSELINK

# data[].attributes.attachment_link.readable_text
Victoria - Fotolia

By

One of the biggest headaches for any desktop admin is users complaining about desktop performance, and perhaps the easy culprit to blame is memory.

IT's first instinct may be to buy more memory, but adding more random access memory (RAM) isn't always the best option. Additionally, there are several factors that control and limit how desktops can use memory.

However, there are some fundamental concepts that can help desktop admins understand how Windows 10 virtual memory works and how physical memory fits into the picture.

Windows 10 virtual memory vs. physical memory

IT professionals should understand the basics when it comes to physical memory, virtual memory and virtual addresses -- also known as address space.

Physical memory is the amount of physical RAM available in the computer. This is something organizations purchase with the computer itself and what many people refer to when they say memory.

Physical memory is where data is stored (Figure 1). Each cell shown in the table has a unique address where data is stored that aids the Windows OS in locating applications.

Windows 10 virtual memory exists as a physical, hidden file on the hard disk called the page file: pagefile.sys. IT professionals should think of the virtual memory as using the hard disk for additional memory when there is not enough RAM for all process requests. The processes, typically opening and running applications, fit into a queue that the OS manages.

The OS can access both the Windows 10 virtual memory and physical memory and map the data and resources that the current processes are using from the page file to RAM. Application processes are written specific to an OS because they cannot communicate directly with the hardware.

Processes operate in privacy, so they aren't aware of any other processes using system resources. Each process depends on the OS to prioritize and manage the total resources to avoid crashing the desktop.

Writing memory and page file swapping

When a process starts up, it reserves a certain amount of memory, which is dictated by the developer in the code. However, initializing processes requires few physical resources. This is analogous to making a hotel reservation. For a hotel receptionist, making the reservation just takes some time to enter it in the system and talk to the customer, but it does not block off the room until you arrive.

Committed memory occurs when the process requests the memory manager to back the reservation with memory via RAM and page files. Using the hotel example, this would be checking into the hotel. Now, there is a room blocked off for the customer, but the customer hasn't taken up any resources such as electricity or water. In a similar way, at this point in the process initiation, the OS hasn't written anything to memory.

Windows 10 memory management vocabulary

There are several terms that desktop admins need to know to understand Windows memory management processes.

Page. At 4 KB in size, this is the smallest unit of memory. Pages of memory are reserved, committed or free.

Free memory. Pages of the virtual address space available for a process's use. When a user initializes the process, most of the pages in its virtual address are free memory.

Process reserved memory. The amount of memory reserved by a process for its own use. This memory isn't necessarily used, but it is usually reserved when a process initializes.

Committed memory. Processes actively use this type of memory, and it consists of physical RAM and page files. It is a promise from the OS that it will be backed by RAM or paging files.

Working set. The amount of RAM used by a single process. This includes private and shareable memory.

Page file. A file on disk -- pagefile.sys -- that extends physical memory but can only hold modified memory pages that are not on disk.

When the OS writes the memory, it maps the virtual memory pages into RAM and the process will consume memory. Using the hotel example, this is where the customer enters the room and starts consuming water, electricity, housekeeping services and other resources. Each process performs these actions as they run.

If one process is running and using less than its dedicated physical RAM, the OS should perform well without any RAM-related issues. However, if several processes are running and their data requirements are more than the available physical RAM, the OS stores some data in the page file and swaps it into RAM with a replacement algorithm.

The OS typically swaps out data that it determines isn't frequently in use to the page file and data needed for a current process action will be swapped in. This swapping causes a delay and, thus, a performance hit.

If the process demand is more than the OS can manage with swapping, or if the process gets referred to an address that doesn't exist, it crashes. In this situation, more RAM may be the best option. IT can analyze the page file using debug tools to determine the cause: for example, a bad driver.

In this scenario, perhaps a better analogy is to a restaurant. Someone wants to eat dinner, which is the process. To do so, this person has to be in the restaurant, or the physical memory, but the number of customers allowed at a given time is limited by the number of seats -- address space.

When the number of customers exceeds the number of seats, the restaurant manager, who is the operating system, issues tickets, which are the virtual address space. The manager uses some rationale to remove customers who are waiting for their food to come and allows some customers with tickets to come into the restaurant.

Eventually, everyone will get in, though they may have to come back several times to finish dinner. This process isn't ideal for serving a meal, but it works for computer processes. While more memory provides better performance in some scenarios, there is a limiting factor called the address table.

Virtual addressing and page tables

Each process stores data and code in address space of memory and is mapped onto the virtual address space by the OS to keep track of it. The OS addresses virtual memory and uses the CPU to interface with the physical memory. Windows 10 virtual memory is limited only by the address space available on the computer's architecture. If the computer architecture cannot address all the memory, then adding memory will not help performance. IT professionals should be familiar with the difference between virtual addressing for 32- and 64-bit architectures (Figure 2).

32-bit architecture
The virtual address space for 32-bit architecture has a physical limit of 2 ³² - 1 or about 4 GB, regardless of the amount of RAM in the computer. Further, Windows divides the address space up into two sections: user and kernel space (Figure 1). The addresses in the kernel space are reserved for system processes, and only the user space addresses are accessible for applications. Therefore, each application has a virtual memory limit of 2 GB, regardless of physical RAM.

No process can ever address more than 2 GB of virtual address space by default. Exceeding this limit produces an out-of-virtual-memory error and can occur even when there is plenty of physical memory available.

Consider a user with several applications open at the same time on a 32-bit platform, for example. Each application or process has 2 GB of virtual address space and has no way to know it is sharing physical RAM with other processes. The OS' memory management then will use Process Translation Extensions to translate the virtual address space for each process to physical RAM. The use of virtual memory allows the three applications, each with 2 GB of virtual address space, to share the 2 GB RAM in the computer (Figure 2). The OS accomplishes this by paging infrequently used data to disk and paging it back to RAM when needed.

The 32-bit architecture can only provide 4 GB address space on an endpoint device with 12 GB of RAM, so it may appear that there is 8 GB of wasted RAM. The RAM isn't wasted; it's allocated to the Physical Address Extension (PAE). This is a processor feature, supported by Intel and AMD, that extends the address space to 2 ³⁶ or about 64 GB. This requires a chipset capable of PAE, and applications must be written to take advantage of PAE.

PAE is enabled on Windows desktops by default, unless explicitly disabled. IT can also repurpose 1 GB from kernel space and add it to user space by using the /3GB switch in boot.ini and BCD. This is common for server applications such as 32-bit Microsoft Exchange Server.

64-bit architecture
The 64-bit architecture (x64) permits 2 ⁶⁴ or about 16 exabytes (EB) of address space. Windows uses a 16 TB tuning model, with 8 TB in user space and 8 TB in Kernel space (Figure 3). This makes a significant difference in memory addressing over the 4 MB of 32 bit.

Rather than the same special switches and extensions of the 32-bit architecture, x64 addresses memory management with a flat model. This allows more processes to run in memory without paging, significantly increasing performance for memory-intensive processes.

The sum of all the memory used by active processes in the system is displayed in Windows 10 Task Manager (Figure 4).

IT professionals can opt to view the alternative Resource Monitor available within Task Manager. This view displays visual and numerical data on the following categories of resource use and availability:

Hardware reserved. Memory dedicated to hardware operation.

In Use. Memory used by processes, Windows and drivers.

Modified. Memory with contents that have not been written to disk. This memory cannot be used until it is written to disk.

Standbby. Memory that contains cached data and code not currently in use.

Free. Free memory that does not contain any valuable data and will be used first when more memory is needed.

# data[].attributes.attachment_link.title
Understand and manage Windows 10 virtual memory | TechTarget

# data[].attributes.attachment_link.description
Before desktop admins tackle monitoring and managing Windows 10 virtual memory, they should learn the differences between virtual memory and physical memory, what role page files play in virtual memory, and how the Window OS uses virtual memory behind the scenes.

# data[].attributes.body
https://learn.microsoft.com/es-es/dotnet/standard/automatic-memory-management

# data[].attributes.attachment_link.readable_text
La administración de memoria automática es uno de los servicios que proporciona Common Language Runtime durante la ejecución administrada. El recolector de elementos no utilizados de Common Language Runtime administra la asignación y liberación de la memoria de una aplicación. Esto significa que los programadores no tienen que escribir código para realizar tareas de administración de memoria al programar aplicaciones administradas. La administración automática de la memoria puede eliminar problemas frecuentes, como olvidar liberar un objeto y causar una pérdida de memoria, o intentar tener acceso a la memoria de un objeto que ya se ha liberado. En esta sección se describe cómo asigna y libera memoria el recolector de elementos no utilizados.

Asignar memoria

Cuando se inicializa un nuevo proceso, el motor en tiempo de ejecución reserva una región contigua de espacio de direcciones para el proceso. Este espacio de direcciones reservado se denomina montón administrado. El montón administrado mantiene un puntero a la dirección a la que se asignará el siguiente objeto del montón. Inicialmente, este puntero se establece en la dirección base del montón administrado. Todos los tipos de referencia se asignan en el montón administrado. Cuando una aplicación crea el primer tipo de referencia, se le asigna memoria en la dirección base del montón administrado. Cuando la aplicación crea el siguiente objeto, el recolector de elementos no utilizados le asigna memoria en el espacio de direcciones que sigue inmediatamente al primer objeto. Siempre que haya espacio de direcciones disponible, el recolector de elementos no utilizados continúa asignando espacio a los objetos nuevos de este modo.

La asignación de memoria desde el montón administrado es más rápida que la asignación de memoria no administrada. Como el tiempo de ejecución asigna memoria a los objetos agregando un valor a un puntero, este método es casi tan rápido como la asignación de memoria desde la pila. Además, puesto que los nuevos objetos que se asignan consecutivamente se almacenan uno junto a otro en el montón administrado, la aplicación puede tener un acceso muy rápido a los objetos.

Liberar memoria

El motor de optimización del recolector de elementos no utilizados determina cuál es el mejor momento para realizar una recolección basándose en las asignaciones realizadas. Cuando el recolector de elementos no utilizados lleva a cabo una recolección, libera la memoria de los objetos que ya no usa la aplicación. Determina qué objetos ya no se usan examinando las raíces de la aplicación. Todas las aplicaciones tienen un conjunto de raíces. Cada raíz hace referencia a un objeto del montón administrado, o bien se establece en null. Las raíces de una aplicación incluyen campos estáticos, variables locales y parámetros de pila de un subproceso y registros de la CPU. El recolector de elementos no utilizados tiene acceso a la lista de raíces activas que el compilador Just-In-Time (JIT) y el runtime mantienen. Con esta lista examina las raíces de la aplicación y, durante este proceso, crea un gráfico que contiene todos los objetos que no se pueden alcanzar desde las raíces.

Los objetos que no están en el gráfico no se pueden alcanzar desde las raíces de la aplicación. El recolector de elementos no utilizados considera elementos no utilizados a los objetos inalcanzables y libera la memoria que tienen asignada. Durante una recolección, el recolector de elementos no utilizados examina el montón administrado y busca los bloques de espacio de direcciones que ocupan los objetos que no se pueden alcanzar. Cuando detecta cada uno de los objetos inalcanzables, usa una función de copia de memoria para compactar los objetos alcanzables en la memoria y libera los bloques de espacios de direcciones asignados a los objetos no alcanzables. Una vez que se ha compactado la memoria de los objetos alcanzables, el recolector de elementos no utilizados hace las correcciones de puntero necesarias para que las raíces de la aplicación señalen a los objetos en sus nuevas ubicaciones. También sitúa el puntero del montón administrado después del último objeto alcanzable. Tenga en cuenta que la memoria sólo se compacta si, durante una recolección, se detecta un número significativo de objetos inalcanzables. Si todos los objetos del montón administrado sobreviven a una recolección, no hay necesidad de comprimir la memoria.

Para mejorar el rendimiento, el tiempo de ejecución asigna memoria a los objetos grandes en un montón aparte. El recolector de elementos no utilizados libera la memoria para los objetos grandes automáticamente. Sin embargo, para no mover objetos grandes en la memoria, dicha memoria no se compacta.

Generaciones y rendimiento

Para optimizar el rendimiento del recolector de elementos no utilizados, el montón administrado se divide en tres generaciones: 0, 1 y 2. El algoritmo de recolección de elementos no utilizados del runtime se basa en diversas generalizaciones que la industria de software informático ha detectado como ciertas al experimentar con esquemas de recolección de elementos no utilizados. Primero, es más rápido compactar la memoria de una parte del montón administrado que la de todo el montón. En segundo lugar, los objetos más recientes tienen una duración más corta y los objetos antiguos tienen una duración más larga. Por último, los objetos más recientes suelen estar relacionados unos con otros y la aplicación tiene acceso a ellos más o menos al mismo tiempo.

El recolector de elementos no utilizados del runtime almacena los nuevos objetos en la generación 0. Los objetos creados en las primeras etapas de la duración de la aplicación y que sobreviven a las recolecciones se promueven y se almacenan en las generaciones 1 y 2. El proceso de promoción de objetos se describe más adelante en este tema. Como es más rápido compactar una parte del montón administrado que todo el montón, este esquema permite que el recolector de elementos no utilizados libere la memoria en una generación específica en lugar de liberarla para todo el montón administrado cada vez que realiza una recolección.

En realidad, el recolector de elementos no utilizados realiza una recolección cuando se llena la generación 0. Si una aplicación trata de crear un nuevo objeto cuando la generación 0 está llena, el recolector de elementos no utilizados detecta que no queda espacio de direcciones en la generación 0 para asignárselo. El recolector de elementos no utilizados realiza una recolección, en un intento de liberar espacio de direcciones para el objeto en la generación 0. Primero examina los objetos de la generación 0 y no todos los objetos del montón administrado. Éste es un enfoque más eficaz, ya que los objetos nuevos suelen tener una duración más corta y se espera que la aplicación no utilice muchos de los objetos de la generación 0 cuando se realice una recolección. Además, una recolección de tan sólo la generación 0 a menudo recupera suficiente memoria para que la aplicación pueda continuar creando nuevos objetos.

Una vez que el recolector de elementos no utilizados realiza una recolección de la generación 0, compacta la memoria de los objetos que se pueden alcanzar como se ha explicado antes en este tema, en Liberar memoria. A continuación, el recolector de elementos no utilizados promueve estos objetos y considera que esta parte del montón administrado está en la generación 1. Dado que los objetos que sobreviven a las recolecciones suelen tener una duración más larga, es lógico promoverlos a una generación superior. En consecuencia, el recolector de elementos no utilizados no tiene que volver a examinar los objetos de las generaciones 1 y 2 cada vez que realiza una recolección en la generación 0.

Una vez que el recolector de elementos no utilizados realiza su primera recolección de la generación 0 y promueve los objetos que se pueden alcanzar a la generación 1, considera que lo que queda del montón administrado forma parte de la generación 0. Continúa asignando memoria a los nuevos objetos de la generación 0 hasta que la generación 0 está completa y es necesario realizar otra recolección. En este momento, el motor de optimización del recolector de elementos no utilizados determina si es necesario examinar los objetos de generaciones más antiguas. Por ejemplo, si una recolección de la generación 0 no recupera memoria suficiente para que la aplicación pueda completar correctamente su intento de crear un nuevo objeto, el recolector de elementos no utilizados puede realizar una recolección de la generación 1 y, a continuación, de la generación 2. Si con ello no recupera suficiente memoria, el recolector de elementos no utilizados puede realizar una recolección de las generaciones 2, 1 y 0. Después de cada recolección, el recolector de elementos no utilizados compacta los objetos que puede alcanzar en la generación 0 y los promueve a la generación 1. Los objetos de la generación 1 que sobreviven a las recolecciones se promueven a la generación 2. Como el recolector de elementos no utilizados solo admite tres generaciones, los objetos de la generación 2 que sobreviven a una recolección se mantienen en esta generación hasta que en una recolección posterior se determina que no se pueden alcanzar.

Liberar memoria para recursos no administrados

En el caso de la mayoría de los objetos creados por la aplicación, puede utilizar el recolector de elementos no utilizados para realizar automáticamente las tareas de administración de memoria. Sin embargo, los recursos no administrados requieren una limpieza explícita. El tipo más habitual de recurso no administrado es un objeto que contiene un recurso del sistema operativo, como un identificador de archivo, identificador de ventana o conexión de red. Aunque el recolector de elementos no utilizados puede realizar el seguimiento del período de duración de un objeto administrado que encapsula un recurso no administrado, no tiene un conocimiento específico de cómo limpiar el recurso. Cuando se crea un objeto que encapsula un recurso no administrado, es recomendable proporcionar el código necesario para limpiar dicho recurso en un método público Dispose. Si se proporciona un método Dispose, se permite que los usuarios del objeto liberen su memoria de manera explícita cuando hayan terminado de usarlo. Si se utiliza un objeto que encapsula un recurso no administrado, se debe conocer la existencia de Dispose y llamarlo cuando sea necesario. Para más información sobre la limpieza de recursos no administrados y el ejemplo de un modelo de diseño para implementar Dispose, consulte Recolección de elementos no utilizados.

Vea también

# data[].attributes.attachment_link.description
Más información acerca de: Automatic Memory Management

# data[].attributes.body
https://learn.microsoft.com/es-es/windows-hardware/drivers/kernel/managing-memory-for-drivers

# data[].attributes.attachment_link.title
Administración de memoria para controladores de Windows - Windows drivers

# data[].attributes.attachment_link.description
Los controladores en modo kernel asignan memoria para fines como el almacenamiento de datos internos, el almacenamiento en búfer de datos durante las operaciones de E/S y el uso compartido de memoria con otros componentes en modo kernel y modo de usuario.

# data[].attributes.body
https://en.softonic.com/articles/programs-lines-code
50 millones de lineas de codigo

# data[].attributes.attachment_link.readable_text
You may not often think about it, but behind every operating system, program, application or video game you use every day there are thousands or even millions of lines of code. An everyday action such as doing a Google search or checking your email in Gmail may seem simple but... Do you know how many lines of code are hidden behind the services of the big G? More than 2 billion! But is that a lot or a little? And if a program has many lines of code does it mean that it is better?

In today's article we are going to dive deep into the world of programming and share with you how many lines of code the most popular programs, video games and operating systems of the moment have. We predict that you will be surprised!

How to find out how many lines of code a program has

To begin our article, we are going to show you how to calculate the source code lines of a program. Don't worry because you won't have to do it by hand. Fortunately, there are many programs with which you can find out the lines of code in just a few clicks.

If you want to calculate the number of lines of source code of a program, the procedure is quite simple:

1. Download the source code of the program and unzip it in a folder.

2. Download CLOC (Count Lines of Code) and copy it to the Windows directory.

3. From the path where the folder with the code is located, type the command cloc <folder>

CLOC recognizes more than a hundred programming languages, and its report separates the code from blank lines and comment lines, which allows a more accurate calculation of the number of lines in the program.

Does more lines of code mean that a program is better?

Absolutely not. When we measure the lines of code of any software, we should not focus on whether a program has many or few lines of code, but on the results. In fact, most programmers are guided by the maxim that quality is better than quantity. It is therefore not surprising that, when creating a program or application, they always seek to optimize the results with as few lines of code as possible.

There is nothing better than an example to demonstrate this point. Imagine that a programmer creates an application with 1 million lines of code. Each and every line of that code is intended to display the message "Hello! How are you?" continuously. As you can see, just because the program has a large amount of code does not mean that it is complex.

Keep in mind that two of the maxims that every self-respecting programmer uses are DRY (Don't Repeat Yourself) and KISS (Keep It Simple, Stupid). Although it is true that depending on the programming language used, more or fewer lines of code are needed, we will always try to optimize the results.

Are all lines of code part of the program?

No. A good programmer not only writes lines of code, but also adds notes and comments within them. These, although they are not part of the code as such (since they are not read by the computer, mobile or console), would be included in the line count. It should also be taken into account that programmers leave a large number of blank lines that, in the long run, constitute part of the word count.

How many lines of code do the main operating systems have?

In terms of complexity and number of integrated tools, operating systems are the software that usually have the most lines of code. Most of them are programmed in C and assembler, less tidy but more efficient languages.

A notable example is Mac OS X, Apple's operating system, which contains more than 86 million lines of code. On the other hand, Windows XP has 45 million lines of code, while a complete Linux distribution can easily exceed 300 million.

Below is a list of the lines of code of some of the most widely used operating systems on the market:

MS-DOS- 4000 lines of code

Windows NT- 2 million lines of code

Windows 3.1- 2 million lines of code

Windows 7- 40 million lines of code

Windows XP- 45 million lines of code

Windows Vista-50 million lines of code

Windows 10- 80 million lines of code

Ubuntu- 50 million lines of code

MacOS X- 84 million lines of code

Android- 12 million lines of code

iOS- 12 million lines of code

How many lines of code do the most famous programs, apps and games have?

If you've ever wondered how many lines of code your favorite browser has, the social network you open on your mobile or that messaging app you can't live without, you've come to the right place. And today we're going to put your mind at rest.

Although there are many factors that influence the number of lines of code in a program (its design philosophy, the language used, the number of comments inserted, etc.) these are the approximate numbers for each of them.

Web browsers

Office suites

Social networks

Messaging apps

Media players and audio and video editors

Image editors

P2P programs

Web applications

WordPress- 160,636 lines of code

Google Suite (Gmail, Drive, Search, etc.): 2 billion lines of code

Reddit-139,659 lines of code

Menéame- 23,190 lines of code

Video game

This is what the programs look like through their lines of code

We hope that this article has helped you to learn a little more about how the lines of code of your favorite programs work and which ones have a greater number of them. As you can see, some of the results are simply amazing. And the fact is that hardly anyone would imagine that Google services have more than 2 billion lines of code. Remember, though: More code does not mean that a program is better.

Did you like what you read? Share this article with your friends on social networks!

# data[].attributes.attachment_link.title
Code by the Numbers: How Many Lines of Code in Popular Programs, Apps, and Video Games? - Softonic

# data[].attributes.attachment_link.description
Have you ever wondered which software, program, app or video game has the most lines of code? Get out of all doubt and find out right now in this arti

# data[].attributes.body
30 million lines of code
https://ubuntu.com/blog/an-overview-of-live-kernel-patching#:~:text=The%20most%20dynamic%20component%20of,version%20had%20over%20999%20commits.

# data[].attributes.attachment_link.title
how many lines of linux ubuntu server code - Google Search

# data[].attributes.attachment_link.description
The most dynamic component of Linux, essential for baseline operation, is the kernel. The Linux kernel has over 30 million lines of code, and in January 2022, the stable Linux kernel version had over 999 commits.Feb 28, 2022

# data[].attributes.body
https://www.compuhoy.com/cuantas-lineas-de-codigo-tiene-linux/
El kernel de Linux tiene alrededor de 27,8 millones de líneas de código en su repositorio de Git, frente a los 26,1 millones de hace un año

# data[].attributes.attachment_link.readable_text
El kernel de Linux tiene alrededor de 27,8 millones de líneas de código en su repositorio de Git, frente a los 26,1 millones de hace un año, mientras que systemd ahora tiene casi 1,3 millones de líneas de código, según las estadísticas de GitHub analizadas por Michael Larabel en Phoronix.

¿Cuántas líneas de código tiene Linux?

Según cloc ejecutado contra 3.13, Linux tiene aproximadamente 12 millones de líneas de código.

¿Cuántas líneas de código hay?

El sistema operativo Android se ejecuta en 12-15 millones de líneas. El Gran Colisionador de Hadrones utiliza 50 millones de líneas. Sin incluir el código de backend, Facebook se ejecuta en 62 millones de líneas de código.

¿Cuántas líneas de código tiene GCC?

Con aproximadamente 15 millones de líneas de código en 2019, GCC es uno de los programas de código abierto más grandes que existen.

¿Cuántas líneas de código tiene Google?

No se trata solo de que las 2 mil millones de líneas de código se encuentren dentro de un único sistema disponible para casi todos los ingenieros de la empresa. Es que este sistema les da a los ingenieros de Google una libertad inusual para usar y combinar código de una miríada de proyectos.

¿Linux está escrito en C ++?

Por lo tanto, C ++ no es, por definición, el lenguaje más adecuado para este módulo del kernel de Linux. ... El programador real puede escribir en el código de cualquier idioma en cualquier idioma. Buenos ejemplos son la implementación de la programación procedimental en lenguaje ensamblador y la programación orientada a objetos en C (ambos están ampliamente presentes en el kernel de Linux).

¿Linux está escrito en Python?

Linux (el kernel) está esencialmente escrito en C con un poco de código ensamblador. ... El resto de las distribuciones Gnu / Linux userland está escrito en cualquier lenguaje que los desarrolladores decidan usar (todavía mucho C y shell pero también C ++, python, perl, javascript, java, C #, golang, lo que sea...)

¿Cuántas líneas de código tiene TikTok?

Microsoft busca la transferencia de los 15 millones de líneas de código de TikTok: Informe Faber.

¿Cómo se escribe el código?

La respuesta corta es que escribir código le dice a la computadora qué hacer, pero no es tan simple. ... El código binario es la representación de estas combinaciones como unos y ceros, donde cada dígito representa un transistor. El código binario se agrupa en bytes, grupos de 8 dígitos que representan 8 transistores.

¿Cuántas líneas de código es demasiado?

Si un elemento consta de más de 30 subelementos, es muy probable que exista un problema grave: a) Los métodos no deben tener más de un promedio de 30 líneas de código (sin contar los espacios de línea y los comentarios).

¿Cuántas líneas de código tiene Windows?

Esto es mucho? En comparación, el sistema operativo Microsoft Windows tiene aproximadamente 50 millones de líneas de código. Por supuesto, todo ingeniero sabe que "líneas de código" es una medida tonta y, además, las líneas de código que contamos aquí son mucho menos complejas que el código escrito por ingenieros de software profesionales.

¿Cuántas líneas de código tiene OSX?

Dicho esto, la última comparación de recuento de líneas de código fuente entre Windows y macOS que vi puso a Windows en aproximadamente 55 millones de líneas de código y macOS en 87 millones de líneas de código.

¿Cuántas líneas de código tiene un compilador?

El compilador de GCC tiene hasta 7,3 millones de líneas de código: Phoronix. Aquí hay algunas estadísticas asombrosas sobre el desarrollo de GCC, la colección de compiladores GNU.

¿Google está codificado en Python?

"Python ha sido una parte importante de Google desde el principio y lo sigue siendo a medida que el sistema crece y evoluciona. Actualmente, decenas de ingenieros de Google usan Python y buscamos más personas con habilidades en este idioma ".

¿Cuál es el programa más grande jamás escrito?

Bueno, el programa más grande jamás escrito sería del Proyecto Genoma Humano: este es un proyecto de código abierto destinado a descubrir la secuencia del ADN humano. El software para analizar el genoma humano y mapear los pares de bases de nucleótidos del ADN tomó 3300 mil millones de líneas de código.

¿Mark Zuckerberg codifica?

Mark Zuckerberg aprendió a codificar poco después de recibir su primera computadora en sexto grado. Zuckerberg se interesó instantáneamente en la codificación, y finalmente recurrió a C ++ para que Dummies se enseñara a programar por sí mismo. En 2013, Zuckerberg explicó su motivación.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código tiene Linux? - CompuHoy.com

# data[].attributes.attachment_link.description
Si está buscando ¿Cuántas líneas de código tiene Linux? haga clic aquí. En Compuhoy.com encontrarás todas las respuestas sobre sistemas operativos.

# data[].attributes.attachment_link.title
El kernel de Linux añade 225.000 líneas de código en 2018, y otros datos curiosos de Linux

# data[].attributes.attachment_link.description
Linux es el sistema operativo en el que se basa Android. En 2018 ha recibido 225.000 nuevas líneas de código. Vamos a ver otras estadísticas curiosas de Linux.

# data[].attributes.body
El kernel de Linux tiene alrededor de 27,8 millones de líneas de código en su repositorio de Git, frente a los 26,1 millones de hace un año, mientras que systemd ahora tiene casi 1,3 millones de líneas de código, según las estadísticas de GitHub analizadas por Michael Larabel en Phoronix.

# data[].attributes.attachment_link.readable_text
El kernel de Linux tiene alrededor de 27,8 millones de líneas de código en su repositorio de Git, frente a los 26,1 millones de hace un año, mientras que systemd ahora tiene casi 1,3 millones de líneas de código, según las estadísticas de GitHub analizadas por Michael Larabel en Phoronix.

¿Qué tamaño tiene el código fuente del kernel de Linux?

- El árbol de fuentes del kernel de Linux tiene hasta 62,296 archivos con un recuento total de líneas en todos estos archivos de código y otros archivos de 25,359,556 líneas.

¿Qué tan grande es el kernel de Linux?

Un núcleo 3 * estable ordinario tiene ahora unos 70 mb. Pero hay pequeñas distribuciones de Linux de 30-10 MB con software y otras cosas que se ejecutan de fábrica.

¿Cuántos núcleos hay en Linux?

Diferentes tipos de granos

En general, la mayoría de los granos se clasifican en tres tipos: monolíticos, micronúcleos e híbridos. Linux es un kernel monolítico, mientras que OS X (XNU) y Windows 7 usan kernels híbridos. Hagamos un recorrido rápido por las tres categorías para que podamos entrar en más detalles más adelante.

¿Cuántas líneas de código tiene GCC?

Con aproximadamente 15 millones de líneas de código en 2019, GCC es uno de los programas de código abierto más grandes que existen.

¿Linux es un kernel o un sistema operativo?

Linux, por su naturaleza, no es un sistema operativo; es un Kernel. El Kernel es parte del sistema operativo, y el más crucial. Para que sea un SO, se suministra con software GNU y otras adiciones que nos dan el nombre GNU / Linux. Linus Torvalds hizo Linux de código abierto en 1992, un año después de su creación.

¿En qué idioma está escrito el kernel de Linux?

C

¿Qué kernel se usa en Linux?

El kernel de Linux® es el componente principal de un sistema operativo (SO) Linux y es la interfaz principal entre el hardware de una computadora y sus procesos. Se comunica entre los 2, gestionando los recursos de la forma más eficiente posible.

¿Es legal editar el kernel de Linux?

Sí, es legal editar el kernel de Linux. Linux se publica bajo la Licencia Pública General (Licencia Pública General). Los usuarios finales pueden modificar y editar cualquier proyecto publicado bajo GPL.

¿Quién mantiene el kernel de Linux?

Durante el período de este informe más reciente de 2016, las principales empresas que contribuyeron al kernel de Linux fueron Intel (12,9 por ciento), Red Hat (8 por ciento), Linaro (4 por ciento), Samsung (3,9 por ciento), SUSE (3,2 por ciento), e IBM (2,7 por ciento).

¿Qué kernel de Linux es mejor?

Actualmente (a partir de esta nueva versión 5.10), la mayoría de las distribuciones de Linux como Ubuntu, Fedora y Arch Linux utilizan la serie Linux Kernel 5. x. Sin embargo, la distribución Debian parece ser más conservadora y todavía usa la serie Linux Kernel 4. x.

¿Qué kernel es mejor?

Los 3 mejores kernels de Android y por qué querrías uno

Franco Kernel. Este es uno de los proyectos de kernel más grandes de la escena y es compatible con bastantes dispositivos, incluidos Nexus 5, OnePlus One y más. ...

ElementalX. Este es otro proyecto que promete compatibilidad con una amplia variedad de dispositivos, y hasta ahora ha mantenido esa promesa. ...

Kernel de Linaro.

11 июн. 2015 г.

¿Cuáles son los tipos de kernel?

Tipos de kernel:

Kernel monolítico: es uno de los tipos de kernel donde todos los servicios del sistema operativo operan en el espacio del kernel. ...

Micro Kernel: son los tipos de kernel los que tienen un enfoque minimalista. ...

Kernel híbrido: es la combinación de kernel monolítico y mircrokernel. ...

Exo Kernel -...

Nano kernel -

28 июл. 2020 г.

¿Cuántas líneas de código tiene Windows?

Esto es mucho? En comparación, el sistema operativo Microsoft Windows tiene aproximadamente 50 millones de líneas de código. Por supuesto, todo ingeniero sabe que "líneas de código" es una medida tonta y, además, las líneas de código que contamos aquí son mucho menos complejas que el código escrito por ingenieros de software profesionales.

¿Cuántas líneas de código tiene Google?

Google tiene 2 mil millones de líneas de código, y todo está en un solo lugar | CON CABLE.

¿Cuántas líneas de código tiene Google Chrome?

Google Chrome (navegador) se ejecuta en 6,7 millones de líneas de código (estimación superior). Un Chevy Volt usa 10 millones de líneas. El sistema operativo Android se ejecuta en 12-15 millones de líneas.

# data[].attributes.attachment_link.title
¿Cuántas líneas de código tiene el kernel de Linux? - CompuHoy.com

# data[].attributes.attachment_link.description
Si está buscando ¿Cuántas líneas de código tiene el kernel de Linux? haga clic aquí. En Compuhoy.com encontrarás todas las respuestas sobre sistemas operativos.

# data[].attributes.body
https://ubuntu.com/blog/an-overview-of-live-kernel-patching#:~:text=The%20most%20dynamic%20component%20of,version%20had%20over%20999%20commits.
Mas de 30 millones de línea de código

# data[].attributes.attachment_link.readable_text
Live kernel patching is an essential component of your Linux server management and vulnerability remediation strategy. Patching encompasses all installed software, and software essential for baseline operation of the OS. The most dynamic component of Linux, essential for baseline operation, is the kernel.

The Linux kernel has over 30 million lines of code, and in January 2022, the stable Linux kernel version had over 999 commits. It is not uncommon for a stable Linux kernel to receive 25 patches every day. Many of these patches address security vulnerabilities, which may or may not be formally disclosed. System Administrators need to insulate their estate from critical vulnerability exploits, which target one of the most scrutinised pieces of software in history.

Ubuntu offers many mechanisms to improve security. For example, AppArmor is a Linux security module (LSM) native to the Linux kernel. AppArmor reduces the kernel's attack surface and improves security through application confinement. Ubuntu 20.04 introduced support for an optional kernel lockdown mode LSM, and also shipped with Kernel Self-Protection. However, one of the most significant mechanisms to safeguard Ubuntu's kernel was introduced in 2016: live kernel patching.

A completely unpatched kernel provides the illusion of stability. Unpatched kernels put your data at risk through potential privilege escalation attacks, or put your service uptime at risk through denial of service vulnerabilities. The cost of a successful attack far outweighs the costs of managing Linux servers responsibly.

What is live kernel patching?

Live kernel patching is an interim solution for high and critical severity kernel vulnerabilities, which need to be addressed immediately without any interruption of service, on high availability or mission critical workloads.

An illustration of how live kernel patching works

The kernel live patch process patches the Linux kernel while the system runs. Kernel live patching inoculates your server in real time, without requiring a reboot. By default, the root user has the CAP_SYS_MODULE capability. This privilege is required to modprobe a module into the Linux kernel. Canonical's Livepatch solution leverages ftrace, and aligns with the upstream Linux kernel's live patching technology. Canonical Livepatch compiles a new function which addresses a security vulnerability, and relies on ftrace to redirect calls to this new, patched function.

Calls to kernel functions invoke the patched versions

Kernel live patching is, unsurprisingly, limited to just the kernel. It is not possible to live patch software packages installed through package managers this way.

To reboot, or not to reboot? When, is the question.

Anyone can file a formal security vulnerability report, in the form of a Common Vulnerability and Exposures (CVE) record at cve.org. This central repository is an internationally recognised catalogue of vulnerabilities, with almost 169,000 reports. A small fraction of kernel security fixes are documented through the CVE process, and some CVEs have undocumented follow-on fixes. Therefore, a kernel restricted to CVE patches only, may still pose a security risk.

At the next scheduled maintenance window, machines with live patched kernels should be fully patched. Fully patching a system would require a sudo apt update; sudo apt upgrade -y followed by a reboot. This activity will patch any missing kernel updates that were not associated with a CVE, and also patch software installed through apt. Landscape offers a choice between a fully-automated upgrade solution and a point-and-click experience to manually trigger the upgrade, over any cross section of your Ubuntu estate.

These computers have been identified as requiring a reboot, by Landscape.

Chart kernel live patching over time with Landscape

Canonical's live kernel patching solution, known as Livepatch, works seamlessly alongside Landscape. Landscape is Canonical's Linux server management product.

Compare Landscape editions

Linux servers with live patched kernels need to be rebooted at the next earliest maintenance window. Charts in Landscape provide a visual indication for how long a server has been live patched, and is awaiting a reboot.

Any shell script that outputs a numerical value can be charted over time, with Custom Graphs

In this example, you can see that every server is completely live patched with the exception of one machine, which has benefited from 48 kernel live patches, and has not yet been rebooted.

If you have 5 minutes and an appetite for custom graphs, follow this short tutorial to add kernel live patch activity on your Landscape dashboard.

Elevate your patch management game

Various teams at Canonical evaluate security vulnerabilities, and prioritise remediations every day. Their work is consumed by a global audience of Ubuntu users ranging from individuals, organisations of all sizes, and governments. Canonical's globally-distributed teams approach security vulnerabilities as a continuous workstream, oftentimes proactively addressing security concerns before formal reports are even filed. When evaluating criteria to find the best linux server management dashboard for your organisation, consider which products benefit from Canonical's depth of experience, and consume Ubuntu Security Notices.

Live kernel patching bolsters your security profile, and thus indirectly also benefits the stability of your machine. Livepatch on-premises offers granular control over kernel live patch deployments. SecOps teams in organisations with rigorous change and release management policies rely on these granular controls to follow their best practises guidelines, and meet their SLA obligations.

Compare the differences between Landscape SaaS and self-hosted Landscape. When you are ready, follow the self-hosted Landscape quickstart guide, or sign up for Ubuntu Pro, and bolster security across your Ubuntu estate with kernel live patching.

# data[].attributes.attachment_link.title
An overview of live kernel patching | Ubuntu

# data[].attributes.attachment_link.description
Learn how Canonical improves security on Linux with live kernel patching. Track Livepatch activity over time in Landscape. [...]

# data[].attributes.body
https://www.linux.com/news/linux-in-2020-27-8-million-lines-of-code-in-the-kernel-1-3-million-in-systemd/

# data[].attributes.attachment_link.title
Linux in 2020: 27.8 million lines of code in the kernel, 1.3 million in systemd - Linux.com

# data[].attributes.attachment_link.description
systemd is now approaching 1.3 million lines of code thanks to nearly 43,000 commits in 2019.

# data[].attributes.body
https://padlet.com/redirect?url=https%3A%2F%2Fwww.compuhoy.com%2Fcuantas-lineas-de-codigo-tiene-linux%2F
Kernel Linux: ~27.8 millones

# data[].attributes.body
https://www.muycomputerpro.com/2023/05/11/distribuciones-linux-populares-empresas-2023

# data[].attributes.attachment_link.readable_text
Linux ha tenido tradicionalmente fama de sistema operativo para desarrolladores y usuarios expertos. También para profesionales acostumbrados a trabajar en solitario, y para microempresas muy relacionadas con el mundo de la tecnología. Pero su evolución hacia un sistema más amigable para todo tipo de usuarios, y el desarrollo de distribuciones adecuadas para empresas de todo tipo, ha ido cambiando poco a poco el panorama de Linux en el mundo de la empresa. Tanto entre las pymes como entre las más grandes. Utilizar Linux a nivel profesional ya no es solo cosa de expertos en tecnología, que también, sino que sus distribuciones llegan ya a los equipos de multinacionales de primer nivel.

Eso sí, para que una distribución de Linux cuente con el favor de una empresa, tiene que ofrecer un plus a sus empleados y directivos. Para empezar, tiene que ser estable, y también segura. Esto quiere decir que las distribuciones reciben periódicamente actualizaciones, tanto de funciones como de seguridad, y que van sumando funciones a lo largo del tiempo. Además, en la mayoría de casos, es necesario que cuente con soporte técnico. Ya con esto presente, y disponible, las empresas pueden buscar la distribución que más se adapte a sus necesidades. Porque no todas son iguales.

Distribuciones de Linux más populares en las empresas

Unas distribuciones de Linux están más preparadas que otras, por ejemplo, para funcionar como un sistema operativo para redes genérico, otras cuentan con funciones más útiles para su instalación en servidores. O para trabajar con contenedores.

Las hay que ofrecen herramientas útiles para desarrolladores y equipos de programadores, mientras que otras están listas para equipos de TI más dedicados al trabajo con sistemas y a las pruebas de red y equipos. Todo depende del tipo de empresa, o departamento, en el que quieran instalar Linux, y el trabajo que hagan. Aquí tienes cinco de las más populares en 2023 en las empresas.

Red Hat Enterprise Linux (RHEL)

En la actualidad, Red Hat Enterprise Linux es la distribución de Linux para empresas más popular entre todo tipo de organizaciones. Se trata de un sistema operativo que funciona en ordenadores de sobremesa, portátiles, servidores y máquinas virtuales. Incluso en la nube. También destaca por su facilidad de instalación y manejo.

Se trata de una distribución estable que cuenta con ciclos de vida largos. Detrás está Red Hat, que se encarga del soporte del sistema, que garantiza durante 10 años y que es de pago para las empresas que contraten uno de los planes que ofrecen. También de su actualización. Está basada en Fedora, y disponible en la nube y para plataformas de IoT además de en escritorio; y preparada para la gestión de grandes cantidades y de cargas de trabajo pesadas.

Incorpora todo tipo de herramientas de Red Hat de gestión de software, automatización o visualización de datos. Además, durante la década que dura el soporte, las empresas que lo instalan irán recibiendo actualizaciones con diversas mejoras, parches de seguridad y del núcleo, además de corrección de errores. Lo tendrán además disponible sin necesidad de reiniciar el sistema para tener que instalarlo, algo que en determinados casos es bastante inconveniente.

Ubuntu Desktop para empresas y Ubuntu Server

La distribución de Linux Ubuntu, de gran popularidad entre usuarios particulares y profesionales, cuenta también con versiones de escritorio para empresas, y para servidores. En ambos casos, está respaldada por Canonical, que se encarga de ofrecer no solo versiones estables del sistema, sino también de proporcionar soporte técnico, con distintos niveles y costes, a las empresas que las instalan y utilizan, como a sus equipos de desarrollo y TI.

El nombre de Ubuntu deriva de una palabra utilizada por las tribus africanas zulú y xhosa, que quiere decir comunidad o unidad. Es, además de muy apreciada por las empresas, también la distribución más popular entre los usuarios particulares. En ambos casos, ofrece entornos de escritorio de navegación sencilla e intuitiva. La que se instala por defecto es Gnome, pero algunas variantes de Ubuntu, como Kubuntu, usan KDE.

Otra de sus ventajas es su instalador, diseñado para ser un asistente útil y sencillo, lo que reduce casi a la mínima expresión la complejidad de la instalación. Además, si en tu empresa no están todavía muy seguros de instalar Linux porque temen que sea muy complicado de utilizar, Ubuntu ayuda a disipar las dudas, ya que permite probar el sistema operativo en los equipos que se instala, y ver cómo funcionaría en él, antes de instalarlo.

Ubuntu cuenta además con un centro de software, en el que puedes buscar apps, y descargar e instalar apps sin necesidad de utilizar la línea de comando. Y si lo que necesitan los empleados y los equipos de trabajo de la empresa es documentación para aprender a utilizar el sistema y sacarle partido, en su página principal hay gran cantidad de documentación práctica sobre el sistema operativo.

Cada año se lanzan dos versiones nuevas de Ubuntu: una en abril y otra en octubre. Canonical da soporte a los lanzamientos estándar durante nueve meses antes de que sea necesario actualizar la versión del sistema. Además, cada dos años aparecen versiones LTS, o de soporte a largo plazo, de Ubuntu. Estas cuentan con soporte durante cinco años. Es compatible con prácticamente cualquier hardware o plataforma de virtualización.

En el caso de Ubuntu Server, se trata de una solución para servidores que cuenta con las ventajas de Ubuntu sumadas a sus funciones y herramientas para servidores en un sistema centrado en la seguridad y la efectividad, pero también en la relación calidad precio. Ubuntu Server es compatible con multitud de arquitecturas. Entre ellas x868, x86-64, ARM V7, ARM64, Power8 y mainframes IBM System Z. Puede utilizarse tanto en empresas grandes como en pequeñas, como sistema para la gestión de un servidor de archivos para una red, o para la gestión de un servidor web.

openSUSE

Las distintas versiones de openSUSE, preparadas sobre todo para empresas y equipos de desarrollo, se han creado con las necesidades de las empresas presentes. Por eso están optimizados para su instalación y gestión en entornos empresariales, y están caracterizados por su estabilidad y facilidad de manejo. Una de sus principales versiones es openSUSE Tumbleweed, basado en Factory y adaptado para instalarlo en estaciones de trabajo.

Sigue un sistema de lanzamiento escalonado y continuo, que lleva a que los usuarios pueden descargar paquetes nuevos del sistema una vez que Factory los ha revisado. Esto, muy apreciado por los usaurios profesionales y equipos de TI, puede ser un escollo para otros usuarios con menos conocimientos del sistema.

openSUSE, en todas sus versiones, utiliza YaST, que básicamente es un portal que permite ajustar la configuración del sistema y administrar el equipo según las necesidades de cada usuario o empresa. Además, facilita la instalación de las principales interfaces de escritorio, como KDE o Gnome, entre muchas, y aplicaciones de terceros. Se pueden instalar incluso varias al mismo tiempo, y pasar de unas a otras a través de YaST a voluntad.

openSUSE Leap, otra de sus principales versiones, también ofrece una gestión e instalación sencillas, ofrece más solidez y seguridad, y está más centrada en el uso empresarial. Utiliza el entorno Gnome, aunque permite elegir otros, como KDE, o XFCE. Ofrece estabilidad y rendimiento ágil, así como una gestión de paquetes mejorada.

Otra de sus versiones más populares en empresas, openSUSE MicroOS, está optimizada para tareas de edge computing, mientras que openSUSE Kubic está optimizada para la gestión de contenedores. Todas ofrecen una interfaz flexible, y una instalación sencilla. En cuanto a seguridad, ofrece protocolos muy estrictos, lo que sin duda facilitará la labor de los administradores de sistemas.

Rocky Linux

Cuando CentOS quedó descatalogado, aparecieron varias distribuciones sucesoras. De ellas, la más popular entre empresas en los últimos meses ha sido sin duda Rocky Linux. Sobre todo, porque es una de las que más se le parece, al ser compatible con el código fuente de RHEL. Se trata de una versión desarrollada por la Fundación de software Rocky Enterprise, de la que recibe actualizaciones periódicas.

Destaca por su estabilidad y rendimiento, y al venir de una distribución de RHEL, es compatible con servidores de empresa. Está disponible para la arquitectura de procesador x86-64 e incluso para la aarh64. Eso sí, se trata de una distribución bastante reciente, ya que apareció en 2021, y por eso todavía hay cierta lentitud en el desarrollo de sus actualizaciones, algo que irá mejorando a medida que va creciendo su comunidad de usuarios y desarrolladores. Por ahora, su estabilidad y funciones han hecho que gane mucha popularidad en empresas tecnológicas y equipos de desarrollo.

Fedora Server

Entre las principales distribuciones de Linux utilizadas en empreesas, Fedora Server se ha ganado una buena reputación en cuanto a estabilidad y flexibilidad para desarrolladores y empresas, así como para profesionales. Es muy estable, y recibe actualizaciones de manera periódica, con novedades y funciones útiles para todo tipo de usuarios. En las últimas, por ejemplo, las empresas que la utilizan se han encontrado con lo último en aplicaciones del sistema, lo que permite a las organizaciones adaptar sus servidores a las últimas tendencias y necesidades de sus clientes.

Sus niveles de seguridad empresarial son también muy elevados, y sus lanzamientos de versiones preconfiguradas ofrecen también una seguridad robusta, que no deja de lado la protección de datos. Fedora server también destaca por mantener siempre al día las aplicaciones para administraciones de sistemas. Estos cuentan, dentro del sistema, con aplicaciones y herramientas de gran utilidad para su trabajo. Es compatible con prácticamente todos los sistemas hardware y arquitecturas, sin prácticamente restricciones.

Permite ejecutar software en servidores cloud o basados en Linux, y a webmasters y administradores de sistemas les ofrece servicios DNS, integración de certificado, gestión de identidad e integración del dominio de Windows, entre otras funciones y herramientas. Además de esta versión para servidores, Fedora cuenta también con versiones para estaciones de trabajo, para entornos cloud, contenedores y dispositivos de Internet de las cosas.

# data[].attributes.attachment_link.title
Estas son las distribuciones de Linux más populares en las empresas en 2023

# data[].attributes.attachment_link.description
Linux ha tenido tradicionalmente fama de sistema operativo para desarrolladores y usuarios expertos. También para profesionales acostumbrados a trabajar en solitario, y para microempresas muy relacionadas con el mundo de la tecnología. Pero su evolución hacia un sistema más amigable para todo tipo de usuarios, y el desarrollo de distribuciones adecuadas para empresas de todo [...]

# data[].attributes.body
https://ubuntu.com/blog/an-overview-of-live-kernel-patching#:~:text=The%20most%20dynamic%20component%20of,version%20had%20over%20999%20commits

# data[].attributes.attachment_link.readable_text
Live kernel patching is an essential component of your Linux server management and vulnerability remediation strategy. Patching encompasses all installed software, and software essential for baseline operation of the OS. The most dynamic component of Linux, essential for baseline operation, is the kernel.

The Linux kernel has over 30 million lines of code, and in January 2022, the stable Linux kernel version had over 999 commits. It is not uncommon for a stable Linux kernel to receive 25 patches every day. Many of these patches address security vulnerabilities, which may or may not be formally disclosed. System Administrators need to insulate their estate from critical vulnerability exploits, which target one of the most scrutinised pieces of software in history.

Ubuntu offers many mechanisms to improve security. For example, AppArmor is a Linux security module (LSM) native to the Linux kernel. AppArmor reduces the kernel's attack surface and improves security through application confinement. Ubuntu 20.04 introduced support for an optional kernel lockdown mode LSM, and also shipped with Kernel Self-Protection. However, one of the most significant mechanisms to safeguard Ubuntu's kernel was introduced in 2016: live kernel patching.

A completely unpatched kernel provides the illusion of stability. Unpatched kernels put your data at risk through potential privilege escalation attacks, or put your service uptime at risk through denial of service vulnerabilities. The cost of a successful attack far outweighs the costs of managing Linux servers responsibly.

What is live kernel patching?

Live kernel patching is an interim solution for high and critical severity kernel vulnerabilities, which need to be addressed immediately without any interruption of service, on high availability or mission critical workloads.

An illustration of how live kernel patching works

The kernel live patch process patches the Linux kernel while the system runs. Kernel live patching inoculates your server in real time, without requiring a reboot. By default, the root user has the CAP_SYS_MODULE capability. This privilege is required to modprobe a module into the Linux kernel. Canonical's Livepatch solution leverages ftrace, and aligns with the upstream Linux kernel's live patching technology. Canonical Livepatch compiles a new function which addresses a security vulnerability, and relies on ftrace to redirect calls to this new, patched function.

Calls to kernel functions invoke the patched versions

Kernel live patching is, unsurprisingly, limited to just the kernel. It is not possible to live patch software packages installed through package managers this way.

To reboot, or not to reboot? When, is the question.

Anyone can file a formal security vulnerability report, in the form of a Common Vulnerability and Exposures (CVE) record at cve.org. This central repository is an internationally recognised catalogue of vulnerabilities, with almost 169,000 reports. A small fraction of kernel security fixes are documented through the CVE process, and some CVEs have undocumented follow-on fixes. Therefore, a kernel restricted to CVE patches only, may still pose a security risk.

At the next scheduled maintenance window, machines with live patched kernels should be fully patched. Fully patching a system would require a sudo apt update; sudo apt upgrade -y followed by a reboot. This activity will patch any missing kernel updates that were not associated with a CVE, and also patch software installed through apt. Landscape offers a choice between a fully-automated upgrade solution and a point-and-click experience to manually trigger the upgrade, over any cross section of your Ubuntu estate.

These computers have been identified as requiring a reboot, by Landscape.

Chart kernel live patching over time with Landscape

Canonical's live kernel patching solution, known as Livepatch, works seamlessly alongside Landscape. Landscape is Canonical's Linux server management product.

Compare Landscape editions

Linux servers with live patched kernels need to be rebooted at the next earliest maintenance window. Charts in Landscape provide a visual indication for how long a server has been live patched, and is awaiting a reboot.

Any shell script that outputs a numerical value can be charted over time, with Custom Graphs

In this example, you can see that every server is completely live patched with the exception of one machine, which has benefited from 48 kernel live patches, and has not yet been rebooted.

If you have 5 minutes and an appetite for custom graphs, follow this short tutorial to add kernel live patch activity on your Landscape dashboard.

Elevate your patch management game

Various teams at Canonical evaluate security vulnerabilities, and prioritise remediations every day. Their work is consumed by a global audience of Ubuntu users ranging from individuals, organisations of all sizes, and governments. Canonical's globally-distributed teams approach security vulnerabilities as a continuous workstream, oftentimes proactively addressing security concerns before formal reports are even filed. When evaluating criteria to find the best linux server management dashboard for your organisation, consider which products benefit from Canonical's depth of experience, and consume Ubuntu Security Notices.

Live kernel patching bolsters your security profile, and thus indirectly also benefits the stability of your machine. Livepatch on-premises offers granular control over kernel live patch deployments. SecOps teams in organisations with rigorous change and release management policies rely on these granular controls to follow their best practises guidelines, and meet their SLA obligations.

Compare the differences between Landscape SaaS and self-hosted Landscape. When you are ready, follow the self-hosted Landscape quickstart guide, or sign up for Ubuntu Pro, and bolster security across your Ubuntu estate with kernel live patching.

# data[].attributes.attachment_link.title
An overview of live kernel patching | Ubuntu

# data[].attributes.attachment_link.description
Learn how Canonical improves security on Linux with live kernel patching. Track Livepatch activity over time in Landscape. [...]