Introducción a la gestión de procesos y threads en Linux Destacado

Esquema para diferenciar procesos y threads Esquema para diferenciar procesos y threads .-.
Valora este artículo
(0 votos)

Me animo con otro tutorial después de haber creado el anterior y espero nuevamente que os guste y os sirva de ayuda. En esta ocasión vamos a explicar un poco qué es eso de los procesos y los hilos de ejecución, o hebras o threads... como los quieras llamar. Ten en cuenta, que todo el software que ejecutas necesita una serie de procesos y/o de hilos que son unidades fundamentales de procesamiento. El scheduler o planificador del kernel Linux las gestionará e irá añadiendo a la cola para que la CPU las vaya ejecutando, accediendo a los datos e instrucciones almacenados en la memoria RAM. Bien, esto es una forma resumida y sencilla de explicar a groso modo el funcionamiento.

Procesos

Pero... ¿qué es un proceso? En los modernos S.O. se trabaja con procesos, que es cómo el sistema trata a programas o tareas específcias en ejecución. Cada uno de ellos posee un espacio de direciones asociado en el que puede leer y escribir en memoria virtual (ya que puede que no se encuentre en la RAM, sino en la memoria de intercambio o Swap y se vaya moviendo de una a otra en función de la prioridad y lo que dicte el planificador). En dicho espacio se almacenarán las instrucciones (código) y datos (constantes, variables,...) que el proceso debe manejar para poderse ejecutar, y por supuesto también su pila o stack. Cuando uno de estos procesos es asignado a una unidad de procesamiento o núcleo de la CPU, ésta comenzará a ejecutarlo y para ello se necesita asignar un conjunto de registros para cada proceso, cargar un registro PC (Program Control) que irá apuntando a la siguiente instrucción del código del programa que se debe ejecutar tras la que está ejecutándose actualmente, un registro SP (Stack Pointer) y otros registros para los operandos que necesita la instrucción. Básicamente, una vez está todo, la unidad de control de la CPU decodificará la instrucción y comenzará a enviar señales al resto de unidades funcionales para que sepan qué deben hacer, como cargar datos desde registros y llevarlos a la ALU o FPU para hacer una operación como una suma, multiplicación, resta, etc. Una vez se consigue el resultado, se pasa a la siguiente instrucción y así hasta completar todo el código de ese proceso. Una vez se tiene, el proceso ha finalizado... Insisto, es una forma simplista de explicarlo, pero no quiero perder a los menos expertos y entrar en temas de superescalaridad, pipeline, OoOE, especulación, etc. 

En Linux, podemos conseguir informacion de los procesos en marcha de muchas formas, pero dos de las mas conocidas son con los comandos:

ps aux
top

El primero muestra los procesos en marcha y el segundo es interactivo, es decir, lo muestra en tiempo real y puedes ver la evolución. Por cierto, para salir de top simplemente pulsa Ctrl+C. Si quieres verlos en forma de árbol, y ver la geneaología y de dónde cuelga cada proceso (como sabes, todos vienen del proceso PID=1 o Init, aunque si no usas SysV, este proceso podría denominarse de otra manera, como systemd), puedes usar:

pstree

Una serie de sistems del kernel, como el planificador citado anteriormente y el IPC (Inter-Process Communication) se encargarán de gestionarlos y comunicarlos entre sí entre señales. Unas señales que seguramente te suenen del uso del comando kill para matar procesos ¿no? Bueno, si no es así puedes listarlas con:

kill -l

Estas señales son las que usará el kernel para modificar los estados de los procesos. En sistemas tipo Unix, los estados posibles son 7 (los puedes ver en la columna STAT de la salida de ps):

  1. Ejecutándose: el proceso está en la cola de ejecución para ser procesado por la CPU.
  2. Interrumpido: se ha interrumpido por el planificador o está durmiendo a la espera de ser despertado por una señal o temporizador y pasar a ejecutarse.
  3. Sin interrupciones: dormido como en el caso anterior, pero puede ser despertado por eventos externos.
  4. Zombie: el proceso ha terminado, pero falta liberar recursos de hardware que tiene ocupados. Es decir, está muerto pero el sistema lo considera vivo... y esos recursos de hardware no pueden ser asigandos a otro proceso.
  5. Parado: ha sido detenido por una señal de control o por ptrace.
  6. Exclusivo: cuando se encuentra dormido o en la cola de ejecución esperando a ser despertado sin necesidad de desperar a los otros procesos. Es decir, no es dependiente de otros y puede ser ejecutado sin necesidad de ejecutar otros previamente.
  7. Terminado: en realidad no se hace referencia a este estado en el sistema, ya que no es un estado en sí, solo es teórico. Es lógico, ya que cuando un proceso ha terminado ya no está en ningún estado, simplemente ha sido ejecutado y ya no existe.

Threads

Eso en cuanto a procesos. ¿Qué sucede con los hilos o threads? No quiero que los confundas con subprocesos, si te fijas en la salida del comando pstree, hay procesos padre e hijos que cuelgan de estos, es decir, que han sido iniciados por el padre. Pero tanto los padres como los hijos no dejan de ser procesos. Los hilos son procesos ligeros en los que se puede dividir cualquier proceso, y por definición sería la unidad de procesamiento más pequeña que puede planificar un sistema operativo. Cada proceso, si se usa programación multithread, está dividido en varios hilos y para que dicho proceso finalice y pase a ese no-estado "terminado" todos y cada uno de sus hilos deben haber finalizado su ejecución.

A diferencia de los procesos, que tenían sus propios recursos asignados, los hilos que pertenecen a un mismo proceso compartirán los recursos asignados a dicho proceso. Aunque, evidentemente de algún modo se deben diferenciar entre sí y eso se consigue asignando a cada thread unos recursos específicos como la pila y el registro de estado de la CPU, etc. Como curiosidad, para generar los procesos, el kernel Linux usa la syscall o llamada al sistema denominada fork(), mientras que para los hilos se usa clone().

Gestión de procesos

Bien, ahora que ya sabemos qué son los procesos e hilos, vamos a ver cómo Linux los gestiona. Y antes de eso, debemos conocer qué es el contexto. Resulta que el planificador irá moviendo los procesos o hebras de la cola de ejecución según la prioridad necesaria. Por eso, si un proceso poco prioritario está en la cola y aparece otro con mayor prioridad, puede sacar al primero de la cola e introducir al segundo. En caso de interrumpir el proceso/hebra, se necesita guardar su información en algún lugar para luego poderlo recuperar. Eso se hace en una parte de la memoria que guardará su estado y que junto con el programa, se conoce como PCB. Todo esto, unido a una serie de algoritmos implementados por software que compondrán el planificador, hará que la gestión de los procesos sea transparente para el usuario y que nosotros solo nos dediquemos a abrir y cerrar apps o realizar tareas dejándole toda la tarea al kernel.

Sin entrar en demasiados detalles de qué es /proc, simplemente que sepas por el momento que es un espacio o interfaz para el usuario en la que el kernel nos muestra la información de procesos. Si te diriges a ese directorio verás un montón de ficheros y directorios numerados. Cada directorio pertenece a un proceso. Por ejemplo, el directorio 575 corresponde con el proceso PID=575. Dentro de dicho directorio, o cualquier otro (solo es un ejemplo), encontrarás unos ficheros como:

  • cmdline: nombre del programa o comando que inició el proceso
  • cwd: enlace simbólico al directorio de trabajo del proceso
  • environ: nombres y valores de variables que maneja el proceso
  • exe: enlace simbólico al ejecutable original
  • fd: directorio con el enlace hacia el descriptor de fichero
  • fdinfo: directorio con entradas que describen la posición y banderas del descriptor
  • maps: información sobre el mapeado de ficheros y bloques
  • mem: binario que representa la memoria virtual usada por el proceso
  • root: enlace hacia el directorio raíz del proceso
  • status: información del estaod del proceso y uso de memoria
  • task: enlaces duros para cualquier tarea...

Bien, si volvemos al tema de los procesos y demás, ya sabes que puedes conseguir también información de ellos con:

ps aux

O la sintaxis equivalente:

ps -ef

Veremos los procesos en marcha listados con una serie de columnas con información. Si usas la opción -u de ps seguida del nombre de usuario solo se listan los procesos de dicho usuario. Por ejemplo:

ps -u root

En cualquier caso, las columnas que nos muestra son:

  • USER: el usuario al que pertenece el proceso.
  • PID: el ID o identificador del proceso.
  • %CPU: porcentaje de CPU usado.
  • %MEM: porcentaje de memoria usada.
  • VSZ: tamaño de la memoria virtual total usada por el proceso.
  • RSS: conjunto de residentes o memoria del proceso que está en la RAM. La otra parte estará en la SWAP.
  • TTY: la tty en la que se ejecuta
  • STAT: el estado del proceso, si recuerdas había 7, mediante letras se mostrará el estado.
  • START: cuándo se inició
  • TIME: tiempo que dura
  • COMMAND: es el programa o binario al que pertenece el proceso.

Y fijate qué curioso, si añadimos una L a nuestras opciones de ps conseguimos un misterioso cambio en las columnas:

ps -efL

Ahora aparecen dos columnas especialmente interesantes para el tema que tratamos. Una es PPID, es decir, el Parent Process ID. Como su nombre indica es el ID del proceso padre del que cuelga este proceso. Pero hay una columna que me interesa aún más, y es LWP (Lightweigh Process). ¿Te suena? Pues sí, es un proceso ligero o thread. En esta columna por tanto aparece el ID del thread. Verás que hay PIDs con un solo LWP, porque no son programas que soporten multithread, pero en otros PID habrá varios LWP para un mismo PID, en ese caso, dicho proceso sí que está fraccionado en hilos.

Y ahora viene la pregunta del millón. ¿Un proceso se puede matar como se matan procesos con kill? La respuesta es NO. Se puede matar a procesos padre o a procesos hijo, lo digo porque incluso en muchos blogs especializados hay verdaderos follones en la terminología y dan a entender que un thread se puede matar con kill de forma independiente y no es cierto. La creación o muerte de los threads solo se puede hacer desde el código fuente, mediante la programación de funciones que los generan o eliminan, pero una vez el programa se está ejecutando no podemos usar kill o ninguna otra herramienta para liquidarlos a nuestro antojo...

Si lo piensas es lógico. Imagina que un proceso que estás ejecutando es la preparación de una tarta. Dicho proceso se divide en 3 threads: la mezcla de los ingredientes para hacer la masa, vertir la masa en el molde y hornear la masa. ¿Podría saltar o eliminar el primer paso de mezclar los ingredientes? Es absurdo, el resultado sería algo erróneo, un molde sin contenido horneado...

Información adicional

  • Nivel de dificultad: Medio
  • ¿Tutorial sacado de otra web/foro?:
Isaac

Blogger, escritor, electrónico, profesor de Linux, y apasionado de la tecnología...

Sitio Web: architecnologia.es

283 comentarios

  • Stevboff
    Stevboff Lunes, 09 Septiembre 2019 06:03

    Xenical Sans Ordonance Acheter Clomid Cette cheap cialis Kamagra Ungesund Fluoxetine 60mg Tablet In Internet Lilly Brand Cialis

  • centrsnabsnuro
    centrsnabsnuro Jueves, 19 Septiembre 2019 10:45

    Сервис Яндекс такси Самара-это хорошая возможность сделать заказ автомашины куда и когда угодно. Сделать заказ авто вы можете несколькими способами: через специальное мобильное приложение, закачав его, на сайте, по телефону Яндекс такси. Вам нужно указать местоположение, личный номер сотового телефона, время когда нужна автомобиль.

    Заказывают такси с детским креслом для перевозки деток, вечером после посиделок надежнее прибегнуть к Яндекс такси, чем сесть в автомобиль нетрезвым, на вокзал или в аэропорт спокойнее воспользоваться Я. такси и не думать где оставить свой транспорт. Оплата производится наличным или безналичным переводом. Время прибытия Я. такси составляет от трех до десяти минут примерно.

    Плюсы работы в Яндекс такси: Быстрая регистрация в приложение, Не очень большая комиссия, Выплаты мгновенные, Постоянный поток заявок, Диспетчер круглосуточно на связи.

    Для выполнения работ в Yandex такси автовладельцу надо оформиться самому и машину, это займёт 5 мин. Наша комиссия будет составлять не свыше пятнадцать % отдохода. Вы можете с легкость получать оплату за работу в любое время. У вас всегда будут заказы. В случае вопросов можно установить связь с постоянно функционирующей службой поддержки. Яндекс такси помогает гражданам очень быстро добраться до нужного места. Заказывая данное Яндекс такси вы приобретаете шикарный сервис в нашем городе.

    как устроиться в яндекс такси в самаре - работа в такси на авто компании

  • BruceBox
    BruceBox Viernes, 20 Septiembre 2019 13:07

    Мы помогаем открыть свое дело online, который сегодня включает в себя в себя рекламу, взаимоотношения с клиентами и настройку процессов, стратегию, повышение узнаваемости бренда, исследование рынка, продвижение, которые бы связывали онлайн-дело с офлайн-работой. Больше 10-ка организаций работают с нами. Мы проводим: Оптимизация наполнения. После сбора главных слов и фраз оптимизируем страницы вашего веб-сайта, затем, чтобы сконцентрироваться вокруг этих определений. Техническое SEO : применяем карты сайта,скорость сайта,адаптивный дизайн и структурированные данные, с тем чтобы усилить ваш личный рейтинг. Местное SEO. Содержание. Постоянное создание свежего наполнения дает возможность занимать наиболее высокие места, позволяя поисковым системам больше страниц для индексации, а гостям сайта - намного больше факторов для перехода на ваш web-сайт. Анализ ключевых слов. Определяем ключевые термины и основополагающие слова, которые ваша основная посетители применяет в целях поискового запроса услуг, продуктов и тем, сопряженных с данной фирмой. Формирование гиперссылок. Yandex дает большее вес сайтам с разнообразными ссылочками на них.

    6]Раскрутка сайта в google
    Сайт, над которым не работают — это очередной хлам, которым и без того переполнен интернет. Именно SEO-специалист должен привести на сайт посетителей, будь то читатели блога или потенциальные клиенты коммерческого сайта. И именно работа SEO и маркетологов делает сайты узнаваемыми, позволяя им стать настоящими брендами и завоевать популярность в своей отрасли.

    На данный момент наши сотрудники несомненно помогли большенству фирмам в таких направлениях как: недвижимость онлайн-банкинг информационные технологии туризм и отдых мебель, компьютеры бытовая техника розничная торговля. Нашим работникам удалось увеличить их трафик, продажи, реорганизовать процессы, улучшить связь. Приглашаем вас к партнерству с нами. Мы продвинем ваш онлайн-сервис в фавориты google и Yandex.

  • SintezpMat
    SintezpMat Martes, 24 Septiembre 2019 13:58



    Наша отечественная корпорация занимается выпуском и продажей пакетов, мешков, а также сумок, Вакуумные пакеты из целофана и бумаги с с начала двухтысячного года. Мы реализуем наши товары по всей Нашей стране.

    8]Пленка полиэтиленовая купить в москве
    В настоящее время едва ли не каждая современная специализированная компания в в области, применяет стикеры ценники, поскольку они не только удобны, но и практичны в применении. А еще, самоклеющиеся этикетки, имеют привлекательный стиль, завлекать покупателей и быть центром для введения интересных идей для реализации собственной продукцией предприятия. Международная компания разрабатывает прогрессивные решения для маркировки продовольственной, химической, косметической и прочих областей промышленности.

    Наш клиент может оформить крупнооптовый заказ Пакетов майка, это позволит вам лично сэкономить. Наша производственная компания предлагает вам сотрудничество с нашей компанией на интересных договорах. Вы можете приобрести Пакеты из воздушно-пузырчатой пленки из желаемого сырья в любом числе.

    7]Медицинские перчатки от производителя
    Бумажные упаковочные изделия незаметно вытесняют обыкновенные синтетические пакеты по многим моментам: -Экологичность используемого материала (под воздействием природы бумажный пакет распадается в разы стремительнее, чем полиэтиленовый) -Универсальность бумажных упаковочных материалов (их применяют с целью упаковки продуктов питания).

    6]Мешки для мусора 240
    Для вас мы предлагаем самоклеющиеся этикетки, которые лучшим образом рассказывают об любом товаре. Изготовитель представляет широкий ассортиментный выбор в надобных объемах и по самым низким ценам. Если вам не известно, какой же цвет подобрать, сотрудники нашей фирмы могут предложить вам несколько альтернатив бесплатно, затем чтобы было проще определить, какой из конечных альтернатив маркировки клиенту подойдет.

  • Sprinsnuro
    Sprinsnuro Sábado, 28 Septiembre 2019 18:25

    Springtime cleansing is actually certainly not just routine to eliminate dust as well as dust. Yet our team need to conduct an audit of winter clothes. Coming from unneeded points to eliminate, you need to well-maintained and determine the storage. Discard the junk and also offer on your own yet another pledge not to save unneeded scrap. Tidy the wall surfaces and also roofs, wash the home windows, permit the spring into the house, repel the inactivity.

    Cleaning in NYC - is the regulation of specialized solutions for springtime cleaning of facilities as well as nearby places, as well as keeping sanitation. The mixture of top quality job and also affordable costs is actually a symbolic component that differentiates our cleansing firm in the NJ cleaning services market.
    Our motto: " The most effective quality - low cost!" and you may be sure of that! In our company, very cost effective rates for all types of cleaning services.
    We guarantee you the provision of qualified cleaning company at a high degree. Professionals knowledgeably understand the techniques of cleansing along with using present day sophisticated devices and focused chemicals. Along with all this, the prices for our solutions are much lower than the major cleaning business.

    Buying such a service as " Spring season Cleansing" in our company, you get the possibility of premium cleansing of the surrounding area of your home. We supply cleaning up where others can easily not adapt. Our company are going to concern you even if you go to the different end of the world and carry out the cleansing at the highest level. Just give us a call.

    Professional cleaning crew Tribeca - spring cleaning

  • KRsnuro
    KRsnuro Jueves, 03 Octubre 2019 02:51

    Make personal design by your sketches . We are cooperating with client on all, without exception stages do comprehensive analysis location dwellings , carry preliminary calculations. If the client have appeared you can ask our consultants and get answer to them with detailed illustration and explanation .
    Gia bathrooms & kitchens it is not cheap pleasure, if it perform do it yourself
    We in the specialized company Sole Partnership AYNRO Concourse Village involved trained specialists, exactly they all know about Kitchen renovation for $10 000.
    The Production Company provides first class 1960 kitchen remodel by affordable rates . Experienced Masters with great experience work can help completely convert in a few weeks perform inexpensive repair . The price depends on selected style of kitchen.

    Each room apartments, houses, cottages or other housing Charleston unique and contains personal high-functional load. And this setting especially is related to modern kitchens.

    Small 50's kitchen remodel Clinton Hill - kitchen renovation manhattan

  • NoreenMen
    NoreenMen Viernes, 11 Octubre 2019 01:13




    OMG! BACK TO SCHOOL |ASTUCES SIMPLES AVEC DES FOURNITURES SCOLAIRES ET DRГ”LES DE SITUATIONS

  • Rebeccadip
    Rebeccadip Viernes, 11 Octubre 2019 19:15




    ✅ БИТВА С БОССОМ ВИЗЕРОМ 🏃 (уникальная тактика) 🔥 НУБ В МАЙНКРАФТЕ *серия 13*

  • snuro
    snuro Viernes, 11 Octubre 2019 19:24

    Мы предлагаем большому и среднему бизнесу, а также частным гражданам полное решение проблем - от регистрации и реорганизации организации до юридической помощи на всех рубежах ее формирования. Мы всегда ценим любого посетителя, обратившегося в нашу организацию.

    Качеством нашей работы несомненно является формирование долгосрочных отношений со всеми нашими клиентами, базированных на основных принципах персонального отношения к любому клиенту и сохранение конфиденциальности данных.

    Наши работники обладают высшим юридическим и финансовым образованием, большущим практическим опытом в сфере оказываемых нами услуг. Основополагающим законом в нашей команде считается то, что, работая с нашей компанией, вы получите реальный исход, базирующийся на наших знаниях и более чем 5 летнем опыте. закрытие ип
    Эта производственная компания специализируется на регистрации и реорганизации юр. лиц и частных владельцев бизнеса, бухгалтерских услугах для абсолютно любого бизнеса, комплексном адвокатском обслуживании юридических лиц. А также выполняем регистрация прав на жилые помещения,регистрация прав на нежилые помещения,признание сделки недействительной,представительство интересов в суде,избежание двойного налогообложения,таможенные споры,юридическая экспертиза,оформление прав на объекты недвижимости,раздел имущества,расторжение брака,возмещение ущерба,трудовые споры в Самаре.

  • Normanbek
    Normanbek Sábado, 12 Octubre 2019 18:12

    Expert cleaning today is actually much more than just cleansing: contemporary tools, resources as well as strategies of job transform it into a true high-tech method that substantially transforms the traditional understanding of what it implies to truly "tidy".

    In property cleaning services - excellent
    Queens maids nyc
    - it's effortless, beneficial and also cost effective with our provider.
    Leave the cleanliness innovators to property cleansing Brooklyn! We utilize expert laundry detergents and specialized devices of global makers in our work as well as perform a superb work along with cleaning of any kind of intricacy.

    8]Move out cleaning services nyc

    Collaboration along with the company is the backer of an impeccable, successful and also reliable cleansing of professional property cleaning as well as surrounding locations. Currently, house cleaning company from our company are actually used in New Shirt. Cherish and you the genuine benefits and functional advantages of our organisation proposition.

    Through authorizing a long-lasting company arrangement with our team, you are going to have the ability to abandon the demand to sustain a large staff of technical staff, which, subsequently, will definitely maximize costs. The expense of the complex, daily, basic property cleaning of Staten Isle, done by our workers, will certainly constantly be lower than the cost of wages for cleaners, the investment of cleaning products and equipment.

    6]Find house cleaning service nyc

    Leave behind a demand on the site, specify your name or firm name, get in touch with telephone number and day of planned cleansing, leave your wishes and needs in a notification to the manager if essential, after that our expert will certainly call you in the fastest time and also define the date, time and place of work!

Deja un comentario

Asegúrese de introducir toda la información requerida, indicada por un asterisco (*). No se permite código HTML.

¡Atención! Este sitio usa cookies y tecnologías similares.

Si no cambia la configuración de su navegador, usted acepta su uso. Saber más

Acepto

Vea nuestra política de cookies y enlaces de interés aquí