Propostas de trabalho (algumas em Lisboa)

⭐️ DEVELOPER
Software Developer – Games Industry
http://app.jobvite.com/m?33bHIkws
Software Developer (Server)
http://app.jobvite.com/m?39bHIkwy
Senior Software Developer – Unity
http://app.jobvite.com/m?3fbHIkwE
DevOps Engineer
http://app.jobvite.com/m?3ocHIkwO

⭐️ ART
Art Project Manager
http://app.jobvite.com/m?3jAGIkw6
3D Generalist Artist (Italy)
http://app.jobvite.com/m?32QGIkw5
Senior Interface Designer (UI/UX)
http://app.jobvite.com/m?3qcHIkwQ
Graphic Promotional Designer
http://app.jobvite.com/m?3ycHIkwY

⭐️ SCRUM MASTER/RELEASE MANAGER
Release Manager/Scrum Master: Games Industry
http://app.jobvite.com/m?3ibHIkwH

⭐️ MARKETING
CRM Marketing Project Manager
http://app.jobvite.com/m?3rrGIkw5
CRM Marketing Specialist
http://app.jobvite.com/m?35AGIkwS

⭐️ GAME DESIGN
Senior Game Designer
http://app.jobvite.com/m?3TQGIkwW
Game Design Lead
http://app.jobvite.com/m?3IQGIkwL
Game Designer
http://app.jobvite.com/m?3rcHIkwR

⭐️ PRODUCT
Senior Product Manager – Games Industry
http://app.jobvite.com/m?3LQGIkwO

⭐️ QA
Quality Assurance Tester (Games Tester)
http://app.jobvite.com/m?34QGIkw7

⭐️ BI
BI Data Engineer
http://app.jobvite.com/m?3aQGIkwd
Junior BI Data Engineer
http://app.jobvite.com/m?3UbHIkwj

Tags : , ,

Estudos sobre gamedesign e assuntos relacionados!

A Carnegie Mellon University, mais concretamente o Carnegie Mellon University – Entertainment Technology Center, nos estados unidos tem uma série de documentos LIVRES acerca do design de videojogos. Nesta altura os títulos que encontrei foram:
Beyond Fun de Drew Davidson
Analog Game Studies, volume one, de Emma Leigh Waldron, Evan Torner, Aaron Trammell
Analog Game Studies, volume three, de Emma Leigh Waldron, Aaron Trammell, Evan Torner
Analog Game Studies, volume two, de Aaron Trammell, Emma Leigh Waldron, Evan Torner
Game Design Research de Petri Lankoski, Jussi Holopainen
Game Design Snacks de José P. Zagal
Game Jam Guide de Sara Cornish, Matthew Farber, Alex Fleming, Kevin Miklasz
Game Mods de Erik Champion
Game Research Methods de Petri Lankoski, Staffan Björk
Learning, Education and Games (Vol. 1) de Karen Schrier
Learning, Education and Games (Vol. 2) de Karen Schrier
Ludoliteracy de José P. Zagal
Missions for Thoughtful Gamers de Andrew Cutting
Mobile Media Learning de Seann Dikkers, John Martin, Bob Coulter
Mobile Media Learning de Christopher Holden, Seann Dikkers, John Martin, Breanne Litts
Possible Worlds in Video Games de Antonio José Planells de la Maza
Real Time Research de Seann Dikkers, Eric Zimmerman, Kurt Squire, Constance Steinkuehler
Tabletop de Greg Costikyan, Drew Davidson
The Game Beat de Kyle Orland
Transmedia Storytelling de Max Giovagnoli
Well Played 1.0 de Drew Davidson
Well Played 2.0 de Drew Davidson
Well Played 3.0 de Drew Davidson

+infos(oficial): http://press.etc.cmu.edu/

Tags : ,

Boardgames: board game design

Apesar de ser sobre boardgames é um texto interessante que descreve as opções acerca do desgin de um board game. Com o titulo “Indigenous board game design in the gift of food” o texto foi escrito em 2016 por Elizabeth Lapensée, onde ela destaca o trabalho que foi tido para revelar alguns aspectos culturais e como este tema é abordado num jogo de tabuleiro.

+infos(fonte oficial): LINK
+infos(blog estudos): http://analoggamestudies.org/

 

Tags : ,

kenney partilhou mais coisas gratuitamente..

A malta do Kenney partilhou recentemente e por conta de um aniversário mais coisas de forma gratuita :) é só consultar, fazer o download e usar.

+infos(oficial): https://kenney.nl/assets/

e já agora fica a partilha do endereço da comunidade Pixeland https://pixeland.io/ têm um blog interessante com uns posts com informação bastante interessantein

Tags : , , ,

Estatística or else..

What other games are strategy fans playing?
“Stellaris and Total War: Three Kingdoms are some of the most popular strategy titles on PC. However, a SuperData analysis shows that while the titles share a genre, they appeal to distinct audiences. Among gamers who have purchased either title, just 2% have bought both games. This means publishers releasing a strategy game need to focus on a more specific audience than simply “strategy fans.””


+infos(oficial): LINK

Worldwide digital games market: August 2019
“Mobile grows share of total worldwide spending. Consumers spent $8.9 billion digitally worldwide in August across console, PC and mobile, up 2% from last year. Mobile, which was the fastest-growing segment, made up 62% of the total compared to 57% last August.”

Worldwide digital spending declines 1% to $8.9 billion in September. Total spend on console and PC declined 17% and 3% year-over-year respectively, despite a slew of new launches. This more than offset a 6% increase on mobile, which increased its share of the total market to 59% this month.

NBA2K and FIFA’s latest releases were slow out of the gate. In-game spending for the NBA2K franchise grew only 6% in September, while the FIFA franchise declined slightly year-over-year due to an unfavorable comparison against World Cup after-effects last year. This compares to last September, where the two franchises saw combined in-game spending growth of 24%.

Fortnite hits lowest point since launch just before “Fortnite Chapter 2“. We estimate Fortnite revenue across all platforms declined 43% month-over-month in September, marking the worst performing month of revenue since November 2017.

Fate/Grand Order receives a huge boost from China. Fate/Grand Order catapulted into the top spot on our mobile rankings this month with $246 million in revenue, up significantly from $131 million in August and $98 million last September, with the majority of the revenue increase coming from China.

Borderlands 3 marks another solid release for 2K Games. Borderlands 3 sold an estimated 3.3 million digital units across console and PC in September. The average selling price per unit came in at an above-average $69 due to Deluxe Edition sales.

+infos(oficial): LINK

Tags : , ,

Handmade pixels: independent video games and the quest for authenticity

:) hoje é dia para divulgar por aqui livros, mais um: “Handmade pixels: independent video games and the quest for authenticity” de Jesper Juul

Acerca do livro:
“An investigation of independent video games—creative, personal, strange, and experimental—and their claims to handcrafted authenticity in a purely digital medium.

Video games are often dismissed as mere entertainment products created by faceless corporations. The last twenty years, however, have seen the rise of independent, or “indie,” video games: a wave of small, cheaply developed, experimental, and personal video games that react against mainstream video game development and culture. In Handmade Pixels, Jesper Juul examine the paradoxical claims of developers, players, and festivals that portray independent games as unique and hand-crafted objects in a globally distributed digital medium.

Juul explains that independent video games are presented not as mass market products, but as cultural works created by people, and are promoted as authentic alternatives to mainstream games. Writing as a game player, scholar, developer, and educator, Juul tells the story of how independent games—creative, personal, strange, and experimental—became a historical movement that borrowed the term “independent” from film and music while finding its own kind of independence.

Juul describes how the visual style of independent games signals their authenticity—often by referring to older video games or analog visual styles. He shows how developers use strategies for creating games with financial, aesthetic, and cultural independence; discusses the aesthetic innovations of “walking simulator” games; and explains the controversies over what is and what isn’t a game. Juul offers examples from independent games ranging from Dys4ia to Firewatch; the text is richly illustrated with many color images.”

Os conteúdos são:
Introduction
High-Tech Low-Tech Authenticity: The Creation of Independent Style at the Independent Games Festival
A selective History of Independen Games
How to Make and Independent Games
The Aesthetics of the Aesthetics of the Aesthetics of Video Games
Whoe Cares If It’s a Game?
Conclusions: Independent Evermore

+infos(oficial): LINK

Tags : , , ,

Time and Space in Video Games: A Cognitive-Formalist Approach

Outro livro que gostava de ter acesso: Time and Space in Video Games: A Cognitive-Formalist Approach (Studies of Digital Media Culture, Bd. 9) de Federico Alvarez Igarzábal

“Video games are temporal artifacts: They change with time as players interact with them in accordance with rules. In this study, Federico Alvarez Igarzábal investigates the formal aspects of video games that determine how these changes are produced and sequenced. Theories of time perception drawn from the cognitive sciences lay the groundwork for an in-depth analysis of these features, making for a comprehensive account of time in this novel medium. The first book-length study exclusively dedicated to the topic, it is an indispensable resource for game scholars and game developers alike, while its reader-friendly style makes it readily accessible to the interested layperson.”

os conteúdos são:
Brain time in virtual space
“the state machine and the present moment”
“structuring gametime”
“cause, effect, and player-centric time
Interation in virtual space
“predictive thinking in virtual worlds”
“the goundhog day effect”
“the hybrid narrator”
Through the temporal landscape
“the speed of time”
“marshmallows and bullets”
“Chekhov’s BFG”
Conclusion

+infos(oficial): LINK
+infos(google books): LINK

Tags : , , ,

Godot Engine Game Development in 24 Hours, Sams Teach Yourself: The Official Guide to Godot 3.0

Aqui está um livro daqueles que gostava de testar: “Godot Engine Game Development in 24 Hours, Sams Teach Yourself: The Official Guide to Godot 3.0” dos autores Ariel Manzur e George Marques

Do programa do livro e em 24h faz parte:
Hour 1. Introducing the Godot Engine
Hour 2. Scene System
Hour 3. 2D Graphics
Hour 4. Scripting
Hour 5. Game 1: Space Shooter
Hour 6. More Scripting
Hour 7. Handling Input
Hour 8. Physics System
Hour 9. User Interface
Hour 10. Animation
Hour 11. Game Flow
Hour 12. File System
Hour 13. 3D Graphics
Hour 14. Project Management
Hour 15. Materials and Shaders
Hour 16. Lights and Shadows
Hour 17. Game 2: Bloxorz Clone
Hour 18. Environments
Hour 19. Sound
Hour 20. Particle System
Hour 21. Viewports and Canvas
Hour 22. Networking
Hour 23. Game 3: Networked Bomberman Clone
Hour 24. Exporting the Project
Hour 25. Native Code

+infos(oficial): LINK

Tags : , , , ,

Uma reportagem: Depois da Bélgica a república checa, sempre no mundo dos videojogos

Depois da Bélgica a república checa, sempre no mundo dos videojogos

“Bernardo Ruas tem apenas 26 anos, mas soma já a sua segunda experiência internacional. Natural de Viseu, emigrou a primeira vez há dois anos para Courtrai, na Bélgica, onde esteve trabalhou como artista 3D durante 10 meses numa empresa de videojogos. Depois desse período regressou ao nosso país, que voltou a abandonar em maio deste ano para partir para uma nova “aventura” lá fora.

Atualmente, este viseense, licenciado em design de jogos digitais, encontra-se em Brun, a segunda maior cidade da República Checa. “Trabalho como 3D outsourcing manager na Hangar 13. Foi onde encontrei trabalho na minha área numa empresa de renome mundial”, explica.

Bernardo diz que a mudança para a “cidade dos estudantes” da República Checa seu “foi ótima”. “Consigo arrendar uma casa maior, recebo mais e a qualidade de vida é superior. Os únicos problemas são mesmo as saudades da família, amigos e de alguns produtos alimentares específicos do nosso lindo Portugal”, sustenta.

Há cinco meses na República Checa, este emigrante garante que nunca se sentiu posto de lado ou mesmo discriminado por ser estrangeiro. Para isso, ajuda estar empregado numa companhia “multinacional que alberga pessoas dos quatro cantos do mundo”. “A comunidade portuguesa também é grande em Brun por isso consigo falar a minha língua todos os dias”, conta.

Na cidade que agora é a sua “casa”, Bernardo destaca “a boa comida, os bons transportes”, a “floresta típica com poucos eucaliptos” e as regalias que a empresa onde está a trabalhar lhe oferece. “Não gosto da capital. Praga está demasiado popularizada, estando cheia de turistas. Em alguns sítios de Brun consegue-se ver uma grande diferença social num espaço de minutos. Há muitos sem abrigo e toxicodependentes nas ruas”, relata.

Desde que partiu para a República Checa, este viseense nunca mais regressou a Portugal, mas tenciona voltar “em breve”. Quanto a um regresso em definitivo a terras lusitanas, Bernardo Ruas diz que, embora gostasse, essa é uma hipótese que não equaciona enquanto “não tiver trabalho devidamente recompensado”.”

+infos(fonte original): LINK

Tags : , ,

Livros acerca do ZX Spectrum

Um dia pode ser que vá ler sobre isto, pela editora Melbourne House:
Spectrum Machine for the Absolute Beginner de William Tang
Understanding your Spectrum de Ian Logan
Over the Spectrum de Philip Williams
Spectrum Machine Language for the Absolute Beginner de William Tang
Super Charge your Spectrum de David Web
Spectrum Hardware Manual de Adrian Dickens
The Complete Rom Disassembly de Ian Logan e  Frank O’Hara
Spectrum Micronet Book de Alan Giles

Encontrei entretanto este site que é um repositório de dados acerca da família ZX Spectrum:
https://spectrumcomputing.co.uk/

Tags : , ,

The Pyramid of Game Design

Gostava de ter acesso a este livro “The Pyramid of Game Design” de Nicholas Lovell:

“Game design is changing. The emergence of service games on PC, mobile and console has created new expectations amongst consumers and requires new techniques from game makers.

In The Pyramid of Game Design, Nicholas Lovell identifies and explains the frameworks and techniques you need to deliver fun, profitable games. Using examples of games ranging from modern free-to-play titles to the earliest arcade games, via PC strategy and traditional boxed titles, Lovell shows how game development has evolved, and provides game makers with the tools to evolve with it.

Harness the Base, Retention and Superfan Layers to create a powerful Core Loop.
Design the player Session to keep players playing while being respectful of their time.
Accept that there are few fixed rules: just trade-offs with consequences.
Adopt Agile and Lean techniques to “learn what you need you learn” quickly
Use analytics, paired with design skills and player feedback, to improve the fun, engagement and profitability of your games.
Adapt your marketing techniques to the reality of the service game era
Consider the ethics of game design in a rapidly changing world.
Lovell shows how service games require all the skills of product game development, and more. He provides a toolset for game makers of all varieties to create fun, profitable games. Filled with practical advice, memorable anecdotes and a wealth of game knowledge, the Pyramid of Game Design is a must-read for all game developers.

+infos(editora): LINK

 

Tags : , , , ,

Humble unity bundle: become a game developer (uma campanha)

da lista deste novo bundle aparece:
Easy Mobile Pro (plugin para o Unity)
Mtree – tree creation (plugin para o Unity)
Snaps Prototype | Asian Residential (plugin para o Unity)
Snaps Art HD | Asian Residential (plugin para o Unity)
Dynamic Bone (plugin para o Unity)
UMotion Pro – Animation Editor (plugin para o Unity)
DoozyUI: Complete UI Management System (plugin para o Unity)
Snaps Prototype | Construction Site (assets)
Snaps Art HD | Construction Site (assets)
Locked contentUnity Learn Premium (video lessons)
PlayMaker (plugin para o Unity)
Aura 2 – Volumetric Lighting & Fog (plugin para o Unity)
Snaps Prototype | Buried Memories Volume 2: Serekh (assets)
Snaps Art HD | Buried Memories Volume 2: Serekh (assets)
The Ultimate Guide to Game Development with Unity 2019 (video lessons)

+infos(campanha): LINK

Tags : , , , , ,

BoardGames e referências..

estudos: Board Game Studies Journal
https://content.sciendo.com/view/journals/bgs/bgs-overview.xml

blog: “Boardgames That Tell Stories”
https://boardgamesthattellstories.wordpress.com/

livro: “Zones of Control: Perspectives on Wargaming (Game Histories) (Inglês) 1st Edition”
+infos(amazon): LINK

blog: Designers and Dragons
https://www.evilhat.com/home/designers-dragons/

livro: “On Wargaming: How Wargames Have Shaped History and How They May Shape The Future” de Matthew B Caffrey Jr.’s
+infos(goodreads): LINK

estudos: journal Board Game Studies
Issues 1-9 http://bgsj.ludus-opuscula.org/
Issues 10-12 https://content.sciendo.com/view/journals/bgs/bgs-overview.xml?tab_body=container-toc

blog: Meeples Together
+infos(oficial): https://www.meeplestogether.com/

livro: Board and Table Games from Many Civilizations de R. C. Bell
+infos(amazon): LINK

livro: Dice Games Properly Explained de Reiner Knizi
+infos(amazon): LINK

livro: Playing at the World by Jon Peterson
+infos(amazon): LINK

livro: eurogames: The Design, Culture and Play of Modern European Board Games de Stewart Woods
+infos(amazon): LINK

blog: Analog Game Studies
+infos(oficial): http://analoggamestudies.org/

livro: The Kobold’s Guide to (Board) Game Design
+infos(amazon): LINK

Tags : ,

DevFest 2019 (em Coimbra)

DevFest 2019

Já é possivel adquirir e a um preço promocional o bilhete para a quarta edição e este ano do DevFest 2019. O evento vai ser realizado no Auditorium António Arnaut of CHUC (Centro Hospitalar da Universidade de Coimbra) em novembro.

+infos(bilhetes): LINK

Tags : , ,

Ian Livingstone e James Wallis o livro..

Board Games in 100 Moves por Ian Livingstone e James Wallis, gostava de o ler :)

“Journey through 8,000 years of history, from Ancient Egyptian Senet and Indian Snakes and Ladders, right up to role-play, fantasy and hybrid games of the present day.
More than 100 games are explored chronologically, from the most ancient to the most modern. Every chapter is full of insightful anecdotes exploring everything from design and acquisition to game play and legacy.
Discover tales of Buddha’s banned games, stolen patents, boards smuggled into prison, and Dungeons & Dragons hysteria. Roll six to start, pass go, and learn more about your favourite board games, from Mahjong to Monopoly and more!”

+infos(loja): LINK

Tags : , ,

Memoirs of a Spectrum Addict ( o documentário)

O Andy Remic tem trabalhado na construção de documentários acerca do ZX Spectrum. Tem tido a possibilidade de contactar malta que em tempos programou jogos para esta plataforma e conseguiu desta forma registar em vídeo algumas dessas histórias.

Os videos que já estão disponíveis são:
Memoirs of a Spectrum Addict
Spectrum Addict Load “Film 2”
Spectrum Addict: The lost tapes 2.5

+infos(oficial): https://www.psychorobot.co.uk/

Tags : ,

Ainda sobre a GPi Case..

Mais uma imagens :)

+infos(oficial): http://retroflag.com/

Tags : , , ,

Consola construída em casa.. game HAT

A game Hat é um kit preparado para o RaspBerry Pi e que permite montar uma consola portátil para correr umas quantas roms de uns quantos sistemas operativos. Projeto interessante pelo baixo preço de 38 euros (sem incluir o RaspBerry Pi, que é comprado à parte).

Pelo que li o único problema e grande é o tipo de bateria que tem, mais propício a ser comprada nos USA.

 

+infos(uma loja): LINK

Tags : ,

Ainda não terminou o ano mas..

A malta da STATISTA libertou mais umas informações acerca de um estudo que fizeram aos dev de videojogos, e não é que o PC aparece ainda como primeira opção e local de desenvolvimento atual :)

Tags :

Neo Geo arcade stick

A malta do SNK vai colocar no mercado uma arcade stick :) vamos lá ver os preços deste brinquedo ;)

+infos(oficial):  LINK

Tags : , ,

Não é retro mas é old :)

Existe uma malta que tem acarinhado um dos primeiros RTS que surgiram no mercado dos computadores domésticos e que foi o caso do grande sucesso Dune 2.

“Dune II: The Building of a Dynasty is the “grand-daddy” of RTS. Dune 2 was the first true RTS game, released in 1992 its still being played today. Dune 2 is based upon the Dune novels by Frank Herbert, it allows you to play as the Evil Harkonnen, Insidious Ordos, or the Noble Atreides. The game is no longer available in most stores, and since it is based in DOS you may have troubles running it, one of the reasons Westwood decided to create Dune 2000. This page is mainly to help those who have lost the manual or are looking for information on the game. Check some of the links below, there are some great pages that have Dune 2 based utilities that can let you edit the game, even play as the Fremen, Sarduakar, and Mercenaries.”

+infos(dune2k): http://dune2k.com/

Outro grande jogo de outros tempos foi o Wing Commander 1 e o 2, e que foi disponibilizado para os tempos modernos pela malta do GOG. Um mimo..

+infos(GOG): https://www.gog.com/game/wing_commander_1_2

Tags : ,

O tema Retro :)

RetroArch é um software que permite jogar através de um emulador jogos de diversas plataformas. É usado por outros emuladores como é o caso da malta que faz o RaspBerry Pi como uma plataforma para jogar jogos de arcade :)

+infos(RetroArch): https://www.retroarch.com/

O produto  “Retroflag GPi CASE for Raspberry Pi Zero and Zero W with Safe Shutdown” é uma box para ser usada com o Raspberry Pi Zero e que permite obter e de forma portátil uma consola para jogar jogos emulados de arcade e de outras plataformas. Um projeto engraçado que custa +- 70 euros :P

+infos(oficial): http://retroflag.com

+infos(Loja): LOJA

+infos(video): LINK

A malta dos Arcade Punks tem feito um trabalho fantástico de ligar a comunidade em volta de um projeto que é o da recolha e disponibilização de sistemas para Arcade, Consolas e outros formatos

+infos(oficial): https://www.arcadepunks.com/

Em Portugal, e lá no norte, temos um projeto que está a dar cartas com o desenvolvimento de máquinas arcade. Deste conjunto de máquinas arcade fazem parte: os bartop go, o arcadestick, ou as retro clássica. Tudo com a possibilidade de ser personalizado. Os preços variam entre os 840 euros e os 300 euros.

+infos(oficial): https://arcadebox.pt/

Tags : , , ,

Humble book bundle: become a game developer (uma campanha)

Esta é mais uma campanha apoiada pela malta da Humble.. a lista é:
Unity 2018 Artificial Intelligence Cookbook, Second Edition
Hands-on Game Development with Unity 2018.1, Video
Mobile Game Development with Unity 3D 2019, Video
Game Design with Unity 2019, Video
Unity Artificial Intelligence Programming, Fourth Edition
Practical Unity Game Development, Video
Locked contentHands-On Augmented Reality with ARCore and Unity, Video
Introduction to Unity, Video
Skeletons vs Zombies MOBA With Multiplayer in Unity, Video
Beginner and Advanced Lighting in Unity, Video
Cinematics and Animations in Unity, Video
Unity Virtual Reality Projects, Second Edition
Unity 2018 Shaders and Effects Cookbook, Third Edition
Unity 2018 Cookbook, Third Edition
Learning C# by Developing Games with Unity 2019, Fourth Edition
Master ARCore 1.3 Unity SDK – Build 6 Augmented Reality Apps, Video
Learn to Code in C# in Unity 3D, Video
Create an Image Target Based Augmented Reality Experience Using Unity 3D and Vuforia 7, Video
Create Augmented Reality Apps using Vuforia 7 in Unity, Video
Create a Game Environment with Blender and Unity, Video

..por menos de 14 euros.

+infos(a campanha): LINK

Tags : , , , ,

SO1 – modelo de programação unix, processos, sinais, redireccionamento

[so1t]

modelo de programação unix, processos, sinais, redireccionamento

Fundamentos de sistemas operativos, 3º edição, capítulos 6 e 11
Begining Linux programming, capítulos 10, 11 e 12

um programa:
é um conjunto de instruções, que descrevem como o computador deve proceder para cumprir um determinado algoritmo
um programa pode ser executado em diferentes processos e em simultâneo

um processo (figSO1_10):


é um ambiente de trabalho com recursos para que um programa seja executado
um processo pode faz parte sempre de um programa, mas pode mudar para outro programa

um processo tem como recursos:
atributos
espaço de memória organizada, tem o heap (variáveis e blocos de memoria dinâmica), tem a pilha (variáveis locais e os endereços de retorno das funções)
tem uma identificação (PID)
recursos, como uma tabela de ficheiros abertos

um processo é criado:
através de um um fork, e o fork só é possivel de ser executado porque já existe um processo
após o fork, o novo processo fica com uma cópia do processo anterior

um novo programa é executado:
com o mecanismo exec (execl, execlp, execle, execv, execvp, execve)
com o exec, o novo processo executa o novo programa, perdendo-se o anterior
se existir a necessidade de não perder o anterior, o novo processo tem que executar nele o programa pretendido (fork+exec)

o fork:
devolve -1, se existir erro
0, estou no contexto do filho
outro valor, estou no contexto do pai

comandos importantes
getpid, obtém o id do processo
getppid, obtém o id do processo pai

como proceder à sincronização simples de processos:
comando wait, espera que o processo filho termine
comando waitpid, espera que o processo filho especifico termine

o waitpid:
-1, pelo primeiro filho que terminar
>0, espera pelo determinado pid que foi o indicado

#sinais
os sinais são um mecanismo de notificação, mecanismo de comunicação assíncrono
os sinais desbloqueiam e execução do processos que os recebem (scanf, pause, sleep,..)

exemplo do tratamento de sinais:

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

int a =0;
void trata_sinal(int s){
a++;
printf("ouch %d ", a);
if(a==5){
printf("ate logo..");
exit(0);
}
}

int main(){
setbuf(stdout, NULL);
signal(SIGINT, trata_sinal);
while(1){
pause();
}
retrun 0;
}

exemplo de interrupção com um sinal:

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

int recebeuSinal;

void atendeSinal(int snum){
printf("\nSinal recebido..");
printf("\nProcessar acontecimento, ler named pipes, etc \n");
recebeuSinal=1;
}

int main(){
char buffer[50];
int res;
printf("\n\nPID=%d\n, getpid());
recebeuSinal=0;
signal(SIGUSR1, atendeSinal);

while(1){
printf("Favor de escrever algo (\"Fim\2 para sair)\n---> ");
res=scanf("%s", buffer);
printf("scanf leu isto: %s\n", buffer);
printf("resultado dos scanf = %d\n", res);

if(recebeuSinal==1){
recebeuSinal=0;
printf("Parece que entretanto foi atendido ");
printf("um sinal qualquer \n");
printf("Lamentamos a eventual cofusao na ");
printf("interface com o utilizador\n");
}
if(strcmp(buffer,"fim")==0){
break;
}
}
printf("ok\n\n");
return 0;
}

Existe outro mecanismo, uma segunda versão, dentro dos sinais que acrescentam funcionalidades adicionais:
sigaction, define o comportamento dos sinais
sigqueue, envia sinais

o sigaction:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
signum, sinal a ser tratato
struct sigaction *act, ponteiro para a estrutura que descrever o que fazer com o sinal
struct sigaction *oldact, ponteiro para a estrutura preenchida com a descrição de como era feito o tratamento do sinal

o sigqueue:
int sigqueue(pid_t pid, int sig, const union sigval value);
pid, é o pid do processo alvo
sig, sinal a enviar
value, valor a passar ao processo alvo juntamente com o sinal

funções relacionadas com mecanismos de sinais:
int pause, aguarda que o processo receba um sinal
in alarm( int seconds), faz uso do sinal SIGALRM, passados x segundos
int sleep( int seconds), faz com que um processo adormeça até que chegue um sinal, ou que passe o numero de segundos

#redireccionamento
o redireccionamento está relacionado com ficheiros unix, funções de entrada e sa+ida, tratamento de input/output e pipes anónimos.

a tabela de ficheiro aberta, tem na sua ordem:
posicao 0, operações de read, stdin
posicao 1, operações de write, stdou
posicao 2, operações de stderr

exemplo, na sheel, de redireccionamento de stdin:

close(0); //libertar o stdin
open("ficheiro.txt", O_RDONLY); //abre o ficheiro, que fica na posição zero
execlp("sort","sort", NULL); //executa o programa

exemplo, na sheel, de redireccionamento de stdout:

close(1); //libertar o stdout
open("ficheiro.txt", O_WDONLY); //abre o ficheiro, que fica na posição um
execlp("ls","ls", NULL); //executa o programa

exemplo, de redireccionamento entre programas usando pipes anónimos:

antes de criar os filhos
int mat[2]; // mat[0], descritor do lado da leitura, mat[1] descritor do lado da escrita
pipe(mat);// criar o pipe

fork... // os filhos vão herdar a tabela de descritores
//no filho que escreve:
close(1); //liberta o stdout
dup(mat[1]); // duplica a extremidade do pipe para escrita, para 1
close(mat[1]); // fecha extremidade de escrita, porque foi duplicada
close(mat[0)); // fecha extremidade de leitura do pipe que nao vai ser usada
execlp("ls","ls",NULL);

//no filho que lê:
close(0); //liberta o stdin
dup(mat[0]); // duplica a extremidade do pipe para leitura, para 0
close(mat[0]); // fecha extremidade de leitura, porque foi duplicada
close(mat[1)); // fecha extremidade de escrita do pipe que nao vai ser usada
execlp("sort","sort",NULL);

questões:
o que acontece ao atendimento de sinais quando é feito fork()?
o que acontece ao atendimento de sinais quando é feito exec()?


Capítulo: 6 (comunicação entre processos) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

os mecanismos de comunicação permitem generalizar as interacções entre processo associando a sincronização e a transferência de informação.
o modelo de comunicação dos processos, produtor e consumidor, implica que ambos devem conhecer a estrutura de mensagens e o protocolo que utilizam na comunicação. a transferência de informação é suportada por um canal.
um processo pode possuir vários canais atribuindo-lhes significados específicos de forma a construírem canais de comunicação especializado, e um canal pode ser partilhado por diversos processos
quando um canal é criado fica a pertencer a um determinado processo com poderes para determinar quais os processo que se lhe poderão associar e para eliminar o canal
a primitiva de envio de menagem pode ter diversas semânticas:
assíncrona – o cliente envia o pedido e continua em execução
síncrona – o cliente fica bloqueado até o processo servidor leia a mensagem
cliente/servidor – o cliente fica bloqueado até que o servidor envie uma mensagem de resposta

Relações entre processo produtor e processo consumidor
comunicação mestre/escravo
a comunicação mestre/escravo tem a seguinte estrutura:
a actividade do escravo é totalmente controlada pelo mestre
o mestre não tem de pedir permissão para utilizar o escravo mas não lhe pode atribuir nova tarefa antes que este tenha terminado a anterior. a sincronização é portanto estrita entre as operações de envio e recepção de informação
o canal que define a associação entre o mestre e o escravo é fixo

Relações entre processo produtor e processo consumidor – mecanismo de correio
trata-se da transferência assíncrona de informação sob a forma de mensagens em que:
o emissor não tem de pedir permissão para enviar mensagens. pode contudo ficar bloqueado se a capacidade de memorização do canal tiver sido excedida
o emissor não tem qualquer controlo sobre o ou os receptores
o canal deve memorizar as mensagens durante o intervalo de tempo que decorre entre a sua produção e o seu consumo

Relações entre processo produtor e processo consumidor – mecanismo de diálogo
é estabelecido um canal de comunicação permanente entre dois processos, mas este é criado de forma dinâmica a associação durará o tempo da interacção, e ao terminar a ligação entre os dois processos é eliminada.
o diálogo é então:
existe um canal de comunicação fixo entre os processos, mas a sua criação é dinâmica
um dos processo deve requisitar o estabelecimento da ligação
a associação entre cliente e servidor é temporária
dialogo

Relações entre processo produtor e processo consumidor – mecanismo de difusão
na difusão pretende-se enviar a mesma informação a um conjunto de processos.

Comunicação do modelo computacional
Comunicação do modelo computacional – memória partilhada
a zona de memória faz parte simultaneamente do espaço de endereçamento de dois ou mais processos que lhe acedem como às suas variáveis internas. a memória partilhada permite a difusão de informação e quando complementada com os mecanismos de sincronização adequados a implementação de um modelo mestre/escravo.

Comunicação do modelo computacional – caixas de correio

Comunicação do modelo computacional – ligações virtuais

Capítulo: 11 (modelo computacional do unix) – Fundamentos de Sistemas Operativos, José Alves Marques, Paulo Guedes – 3ª edição – Editorial Presença

Processos
os processos são os elementos activos, existindo mecanismos para sincronização e comunicação. um processo executa uma imagem, em que imagem designa o ambiente de execução do processo. este ambiente é constituído por um conjunto de três unidades:
texto (código do programa)
dados (do utilizador)
pilha do utilizador (user stack)

um processo é identificado no sistema por um valor inteiro atribuído na criação do processo designado por process identifier – pid
a protecção no acesso a recurso é feito de acordo com as categorias:
dono (utilizador normalmente criou o recurso)
grupo (conjunto de utilizadores com afinidades de trabalho que justificam direitos semelhantes
restantes utilizadores

um processo tem associados dois identificadores que definem o seu numero de utilizador user identification (UID) e o seu número de grupo group identificanon (GID)

os processos são criados explicitamente através da primitiva fork. fork cria um novo processo absolutamente idêntico ao processo pai. o processo filho herda todo o contexto (nucleo e utilizador) do processo pai e continua a executar o mesmo código na instrução seguinte ao fork

IDProcesso = fork()
para o processo pai a primitiva fork retorna o identificador do novo processo enquanto o valor retornado para o processo filho é sempre zero. a primitiva retorna -1 se o fork não for possivel/erro

#include <stdio.h>
#include <unistd.h>
int main()
{
  int pid;
  pid = fork();
  if(pid == 0){
      printf("\nprocesso filho %d", getpid());
  }else{
    printf("\nprocesso pai %d", getpid());
  }
      printf("\no resto do ... %d", getpid());
  return 0;
}
saida:
processo filho 123
no resto do ... 123
processo pai 321
no resto do ... 123

a primitiva exec permite substituir o programa por outro, lido a partir de um ficheiro especificado como argumento da chamada.

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
  int pid;
  pid = fork();
  if(pid == 0){
      printf("\nprocesso filho %d", getpid());
      execl("./testeE2","./testeE2", NULL);
      //execl, primeiro é o executavel e a seguir são os argumentos
      exit(1);
  }else{
    printf("\nprocesso pai %d", getpid());
  }
      printf("\no resto do ... %d", getpid());
  return 0;
}

 

#include <stdio.h>
#include <unistd.h>
void main()
{
  printf("\nsou o testeE2 ... %d", getpid());
}

 

saida:
processo pai 321
no resto do ... 321
sou o testeE2 ... 111

a primitiva exec modifica o segmento de dados e de texto do processo, contudo o contexto núcleo mantém-se inalterado. o novo processo tem o mesmo código de protecção (UID, GID) e ficheiros abertos que o processo possuía antes da execução de exec

Processos – terminar com processo
a função de sistema exit permite a um processo terminar normalmente a sua execução
o processo pai pode bloquear-se à espera da terminação do processo filho, através da primitiva wait

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
int main()
{
  int pid, estado, numero;
  pid = fork();
  if(pid == 0){
      printf("\nprocesso filho %d", getpid());
      exit(0);
  }else{
    printf("\nprocesso pai %d", getpid());
    pid = wait (&estado);
    //wait, fica bloqueado o pai à espera do filho
  }
    printf("\no resto do ... %d", getpid());
  return 0;
}
saida:
processo filho 123
processo pai 321
no resto do ... 321

Processos – acontecimentos assíncronos – signals
acontecimentos assíncronos e excepções podem ser assinalados a um processo em execução através da activação de um signal

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
  int pid, pid_term, estado;
  pid = fork();
  if(pid == 0){
      printf("\nprocesso filho %d", getpid());
      execl("./testeE2","./testeE2", NULL);
      printf("\n filho: erro no exec");
      exit(-1);
  }else{
    printf("\n processo pai %d", getpid());
    pid_term = wait (&estado);
    printf("\n pai terminou o processo %d com o estado %i", pid_term, estado);
  }
    printf("\no resto do ... %d", getpid());
  return 0;
}
sou o testeE2 ... 1111
processo pai 123
pai terminou o processo 1111 com o estado 5888
o resto do ... 123

alguns signals estão relacionada com interrupções provocadas pelo hardware.
existem também as excepções, como a divisão por zero ou número errado de argumentos numa chamada ao sistema
existem signals que estão relacionados com a interacção com os terminais tecla del, break ou detecção de linha não operacional.

Processos – acontecimentos assíncronos – tratamento de signals
para associar uma rotina ao signal enviado pela interrupção do terminal

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>

void ApanhaCTRLC(){
    char ch;
    printf("\n quer termina a execucao? s/n");
    ch = getchar();
    if(ch == 's'){
        exit(1);
    }else{
        printf("\nvamos continuar");
        signal(SIGINT,ApanhaCTRLC);
    }
}

int main()
{
  signal(SIGINT, ApanhaCTRLC);
  printf("associou-se um tratamento de SIGINT");
  for(;;){
      sleep(10);
  }
  return 0;
}
saida:
d 
d
d
CTRL+C
s
saiu

Um sinal pode também ser ignorado usando o SIG_IGN
Quando se executa um fork, o tratamento dos signals é herdado pelo processo filho. este tem a liberdade de modificar o seu tratamento. a primitiva exec mantém o estado dos signals ignorados mas obviamente perde as rotinas de tratamento

Processos – acontecimentos assíncronos – envio explicito de signals
os signals podem ser enviados a outros processos através da primitiva kill, e que termina com o processo destinatário se o signal estiver a ser tratado
kill(pid, sig)
quando um processo bloqueado num semáforo, num mecanismo de comunicação ou leitura de um ficheiro recebe um signal, é automaticamente desbloqueado
o signal SIGKILL não pode ser ignorado ou tratado pelo processo destinatário e conduz sempre à respectiva terminação.
se o PID especificado na rotina kill for 0, o signal é enviado a todos os processos que pertencem ao mesmo grupo
um processo pode bloquear-se à espera de um sginal através da função pause
e pode requerer que lhe seja enviado um sinal do tipo SIGALARM
alarm(segundos)
para adormecer um processo durante um determinado intervalo de tempo que utiliza as primitivas alarm e pause
sleep(segundos)

Sistema de ficheiros – ficheiros especiais
é possivel fazer a redirecção das operações sobre ficheiros para as E/S. apesar de nem todas as operações sobre ficheiros fazerem sentido, as mais importantes (opne, read, write, close) funcionam transparentemente sobre os gestores de periféricos

Comunicação entre processos – pipes
os pipes foram o mecanismo inicial para intercomunicação entre processos. um pipe pode ser visualizado como um canal ligando dois processos e permitindo um fluxo de informação unidireccional. funcionamento é idêntico à de uma caixa de correio em que as mensagens são sequenciais de qualquer dimensão
um processo é bloqueado quando escreve um pipe já cheio a primitiva de leitura, lê sempre o que já existe no pipe mesmo que o seu número seja inferior aos especificado na chamada a read. no caso em que o pipe está vazio o processo leitor é bloqueado.

um pipe pode ser utilizado como um ficheiro ou em substituição do periférico de entrada ou saída do programa.
(ver código abaixo)
é feita a redirecção da entrada para um processo filho. o processo cria um pipe antes de criar o processo filho, para o qual é passado todos os descritores. o processo filho fecha o seu descritor de entrada (deixando a entrada 0 na tabela livre) e duplica o descritor de leitura do pipe que irá ocupar a primeira posição na tabela de descritores (a posição 0 deixada livre pelo close executado anteriormente) o programa a executar-se no processo filho efectuara leituras sobre stdin, estas serão efectuadas transparentemente sobre o pipe que ocupou o seu lugar

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

#define TAMMSG 1000

char mens[] = "mensagem de teste";
char buf[TAMMSG];

int main()
{
    int fd[2];

    if (pipe(fd) < 0)
    {
        printf("erro pipe\n");
    };
    if (fork() == 0)
    {
        //processo do filho
        //fecha stdin libertanto a posição zero da tabela
        close(0);
        //redireciona o stdin para o pipe de leitura
        dup(fd[0]);
        //fecha os descritores nao utilizados pelo filho
        close(fd[0]);
        close(fd[1]);

        read(0, buf, sizeof(mens));
        printf("filho %s\n", mens);
        exit(1);
    }
    else
    {
        write(fd[1], mens, sizeof("mens"));
        wait(0);
    }

    return 0;
}

saida:
filho: mensagem de teste

Comunicação entre processos - pipes com nome
utiliza-se o serviço de nomes do sistema de ficheiros para manter o identificador do pipe
o pipe com nome (named pipes) comporta-se como um ficheiro, existindo para o referenciar uma entrada na directoria do sistema de ficheiros
a maior limitação do uso de pipes advém da limitação baseada no sistema de ficheiros que não só restringe a funcionalidade (unidirecionalidade, interface byte stream) como limita o desempenho.

Comunicação entre processos - espera alternativa
a função selecte indica ao sistema que o processo pretende ficar bloqueado até que uma operação ou várias operações se tenham realizado.
este mecanismo é extremamente poderoso, pois possibilita tratar as operações de entrada/saída de forma assíncrona evitando manipulações complexas dos signals

Tags : , ,