COLEGIO TÉCNICO PROFESIONAL
DE SAN PEDRO DE BARVA
Data Management
Prof. Jorge Esteban Méndez Muñoz
Matías Campos Tenorio, Carlos Solis Carazo,
Jeremy Vega Bastos
Sección 12-1
San Pedro de Barva
2024
Unix Operating System
UNIX is a computer operating system, It was written in assembly language. Ken Thompson, Dennis
Ritchie, Douglas McIlroy, and others created it.
Unix-like operating systems are widely used in modern servers, workstations, and mobile devices.
It was first developed in 1969 at Bell Labs and it was created primarily to provide a more
convenient and interactive environment for software development and to allow multiple users to
share a single computer simultaneously through a time-sharing system.
Key milestones in the evolution of Unix include its inception at Bell Labs in the late 1960s, the
development of Research Unix in the early 1970s, the creation of System V, and the rise of BSD.
Early versions, like those written in C, established Unix as a portable and modular system.
The primary goals of the Unix operating system design were to provide a convenient and powerful
environment for programmers, emphasizing ease of use, interactive development, and a self-
supporting system where software could be developed and maintained on the same platform.
Initially, it wasn't designed for multitasking or portability, but these capabilities were later added.
Memory Management:
UNIX systems manage RAM and virtual memory using a combination of hardware and software.
The Memory Management Unit translates virtual addresses into physical addresses, while the
operating system manages the swapping of data between RAM and disk to handle page faults and
optimize memory usage.
CPU Allocation:
Unix uses a scheduler to allocate CPU time to processes. It employs algorithms like Round Robin,
Multilevel Queue, or Completely Fair Scheduler (CFS)
Unix supports preemptive multitasking, meaning the OS can forcibly switch between processes to
ensure fair CPU distribution.
Process Management:
Processes are created using the fork() system call, which creates a child process as a duplicate of
the parent. Then exec() can replace it with a new program. Unix maintains a Process Control Block
(PCB) for each process, storing info like PID, state, priority, and resource usage. Processes
terminate via the exit() system call. The wait() or waitpid() calls allow a parent process to collect
the exit status.
Device Management:
Devices are treated as *files* in Unix, Unix uses device drivers (kernel modules) to communicate
with hardware. These provide standardized interfaces to apps. For slower devices like printers,
Unix uses spooling to queue data and buffers for smoother data flow.
File Management:
Common Unix file systems include:
- *ext3/ext4*
- *XFS*
- *ZFS*
- *UFS* (BSD)
Unix uses a *hierarchical directory structure* starting from root (/).
Unix uses a permission model:
- User / Group / Others
- Permissions: *read (r), **write (w), **execute (x)*
Network Management:
Unix implements the TCP/IP stack and supports protocols like TCP, UDP, HTTP, FTP, etc.
System Security
- Process access control: Each process runs with the permissions of the user who
launched it, which prevents one process from accessing the resources of another
without authorization.
- Root privileges: The root superuser has full access to the entire system. The sudo
command allows common users to execute commands with root privileges in a
controlled and auditable way, avoiding the constant use of root.
- Process management: Processes can be managed using commands such as kill to
end processes and nice to change their priority, which helps to keep the system
controlled and efficient.
User Security
- Authentication: Users must authenticate using passwords, which may have
security policies.
- Sudo: Instead of logging in as root, ordinary users can execute commands with
elevated privileges using sudo.
- Two-factor authentication: Although not common by default, two-factor
authentication (2FA) can be configured to add an extra layer of security for
accessing UNIX systems.
Data Security
- File permissions: Each file and directory in UNIX has specific permissions that
determine who can read, write or execute the file.
- Encryption: Tools such as gpg and openssl are available to encrypt files and data,
ensuring that even if data is stolen, it cannot be read without the proper key.
In UNIX, users can interact with the operating system in two main ways: Command Line
Interface (CLI) and Graphical User Interface (GUI).
User Management: Users are created and managed with commands such as useradd and
passwd, and their data is stored in files such as /etc/passwd and /etc/shadow.
Update Management: Updates are managed with package managers such as apt
(Debian/Ubuntu) or yum (Red Hat), using commands such as sudo apt update or sudo dnf
update to keep the system up to date.
Resource system: These are controlled with commands such as top (for processes), free
(for memory), and df (for disk space). Resource limits are configured in files such as
/etc/security/limits.conf.
Log Management: System logs are stored in /var/log/, and tools such as tail or journalctl
allow them to be viewed. Log rotation is handled with logrotate.
Conclusion:
UNIX is a robust, versatile and efficient operating system, widely used in servers,
workstations and high-performance devices. Its design focuses on security, stability and
flexibility, making it a preferred choice for environments where reliability and control are
required. Despite its advantages, the learning curve and complexity make it less suitable
for novice users.
Advantages of UNIX:
Stability and reliability: It is known for its stability, especially on mission-critical servers
and systems, where downtime must be kept to a minimum.
Security: UNIX has advanced security mechanisms, such as access control, strong
authentication and detailed permissions management.
Flexibility and customization: It offers a great ability to customize the system to the user's
needs, from its kernel to the user interface.
Disadvantages of UNIX:
Learning curve: Requires advanced technical knowledge, especially in the command line
interface, which can be complicated for novice users.
Software compatibility: Although there are many applications available for UNIX, not all
commercial or mass-use applications are designed specifically for this operating system.
More resource-intensive in graphical environments: Although the CLI is efficient,
graphical interfaces can be more cumbersome in terms of system resource usage.
Recommendations for use:
Servers and enterprise environments: UNIX is ideal for servers and environments that
require high availability, security and resource control, such as web servers, databases or
development environments.
Power users and development environments: If you need a flexible and customizable
system for complex programming, system administration or data analysis tasks, UNIX is an
excellent choice.