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.
- 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()
.
- 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.
- 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.
- 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ó.
Fonaments de Sistemes Operatius
Mòdul 1: Introducció als Sistemes Operatius
- Conceptes Bàsics de Sistemes Operatius
- Història i Evolució dels Sistemes Operatius
- Tipus de Sistemes Operatius
- Funcions Principals d'un Sistema Operatiu
Mòdul 2: Gestió de Recursos
Mòdul 3: Concurrència
- Conceptes de Concurrència
- Fils i Processos
- Sincronització i Exclusió Mútua
- Problemes Clàssics de Concurrència