En aquest tema, explorarem les funcions principals d'un sistema operatiu (SO). Un SO és el programari que gestiona el maquinari de l'ordinador i proporciona serveis comuns per als programes d'aplicació. Les funcions principals d'un SO inclouen la gestió de processos, la gestió de memòria, la gestió d'entrada/sortida (E/S) i la gestió d'arxius.

  1. Gestió de Processos

Definició

La gestió de processos implica la creació, planificació i terminació dels processos. Un procés és un programa en execució, que inclou el codi del programa, les dades i l'estat d'execució.

Funcions Clau

  • Creació i Terminació de Processos: El SO crea nous processos i finalitza els processos que han completat la seva tasca.
  • Planificació de Processos: El SO decideix quins processos s'executaran i en quin ordre.
  • Sincronització i Comunicació entre Processos: El SO proporciona mecanismes perquè els processos puguin comunicar-se i sincronitzar-se entre ells.

Exemple de Codi

#include <stdio.h>
#include <unistd.h>

int main() {
    pid_t pid = fork(); // Crea un nou procés

    if (pid == 0) {
        // Aquest és el procés fill
        printf("Hola des del procés fill!\n");
    } else {
        // Aquest és el procés pare
        printf("Hola des del procés pare!\n");
    }

    return 0;
}

En aquest exemple, la funció fork() crea un nou procés. El procés pare i el procés fill executen el mateix codi, però poden distingir-se pel valor retornat per fork().

  1. Gestió de Memòria

Definició

La gestió de memòria implica la gestió de la memòria principal (RAM) de l'ordinador. El SO s'encarrega d'assignar i alliberar memòria per als processos.

Funcions Clau

  • Assignació de Memòria: El SO assigna memòria als processos quan ho necessiten.
  • Alliberament de Memòria: El SO allibera la memòria quan ja no és necessària.
  • Memòria Virtual: El SO utilitza tècniques de memòria virtual per ampliar la memòria física disponible.

Exemple de Codi

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int *)malloc(sizeof(int) * 10); // Assigna memòria per a 10 enters

    if (ptr == NULL) {
        printf("Error en l'assignació de memòria\n");
        return 1;
    }

    for (int i = 0; i < 10; i++) {
        ptr[i] = i * 10;
        printf("ptr[%d] = %d\n", i, ptr[i]);
    }

    free(ptr); // Allibera la memòria assignada

    return 0;
}

En aquest exemple, la funció malloc() assigna memòria dinàmica, i la funció free() allibera la memòria assignada.

  1. Gestió d'Entrada/Sortida (E/S)

Definició

La gestió d'E/S implica la gestió dels dispositius d'entrada i sortida, com ara teclats, ratolins, discos durs i impressores.

Funcions Clau

  • Control de Dispositius: El SO controla els dispositius d'E/S i gestiona les seves operacions.
  • Buffering i Caching: El SO utilitza tècniques de buffering i caching per millorar el rendiment de les operacions d'E/S.
  • Drivers de Dispositius: El SO proporciona drivers per comunicar-se amb els dispositius d'E/S.

Exemple de Codi

#include <stdio.h>

int main() {
    FILE *file = fopen("exemple.txt", "w"); // Obre un fitxer per escriure

    if (file == NULL) {
        printf("Error en obrir el fitxer\n");
        return 1;
    }

    fprintf(file, "Hola, món!\n"); // Escriu al fitxer
    fclose(file); // Tanca el fitxer

    return 0;
}

En aquest exemple, la funció fopen() obre un fitxer, fprintf() escriu al fitxer, i fclose() tanca el fitxer.

  1. Gestió d'Arxius

Definició

La gestió d'arxius implica la gestió dels arxius i directoris emmagatzemats en els dispositius d'emmagatzematge.

Funcions Clau

  • Creació i Eliminació d'Arxius: El SO crea i elimina arxius i directoris.
  • Lectura i Escriptura d'Arxius: El SO llegeix i escriu dades als arxius.
  • Permisos d'Accés: El SO gestiona els permisos d'accés als arxius i directoris.

Exemple de Codi

#include <stdio.h>

int main() {
    FILE *file = fopen("exemple.txt", "r"); // Obre un fitxer per llegir

    if (file == NULL) {
        printf("Error en obrir el fitxer\n");
        return 1;
    }

    char buffer[100];
    while (fgets(buffer, 100, file) != NULL) {
        printf("%s", buffer); // Llegeix i imprimeix el contingut del fitxer
    }

    fclose(file); // Tanca el fitxer

    return 0;
}

En aquest exemple, la funció fopen() obre un fitxer per llegir, fgets() llegeix el contingut del fitxer, i fclose() tanca el fitxer.

Resum

En aquesta secció, hem explorat les funcions principals d'un sistema operatiu, incloent la gestió de processos, la gestió de memòria, la gestió d'entrada/sortida i la gestió d'arxius. Cada una d'aquestes funcions és essencial per al funcionament eficient i segur d'un ordinador. En els següents mòduls, aprofundirem en cadascuna d'aquestes àrees per entendre millor com els sistemes operatius gestionen els recursos i proporcionen serveis als programes d'aplicació.

© Copyright 2024. Tots els drets reservats